오늘의 계획

1. 마지막 수정 및 점검

2. 발표

3. 개인 알고리즘 공부

 

  • 발표

전날에 발표 대본은 써놨지만 발표에 대한 경험이 거의 없고 열심히 팀원들과 준비한 게임을 내 발표로 망칠까봐 걱정이 많이 됐다. 하지만 이때 아니면 언제 발표를 연습해보겠어! 라는 생각과 팀원분들의 격려로 ppt자료와 대본을 한 번 더 체크했다.

미니프로젝트이지만 처음으로 팀원들과 협동하며 하나의 게임을 완성한 경험은 아쉬우면서도 뿌듯했다. 시간이 좀 더 있었다면 구현하면 좋았을텐데 싶은 부분과 발표 때 긴장해서 말을 제대로 못한게 아쉽기도 했지만 새로운 경험이라 재밌었다.

 

  • 알고리즘 문제 풀이

C# 코딩테스트 알고리즘 코드타카 문제를 풀던 중, 두 수의 나눗셈 부분에서 Convert 함수와 (double), (int) 등의 형변환 방식의 차이점이 무엇일까 궁금증이 생겼다. Convert 함수는 String처럼 숫자형이 아닌 자료형도 변환시켜줄 수 있지만 (double), (int) 등의 형변환은 숫자형끼리만 변환시킬 수 있었다.

 

나의 첫 코드는 이랬는데

public class Solution {
    public int solution(int num1, int num2) {
        double answer = Convert.ToDouble(num1 / num2 * 1000);
        return Convert.ToInt32(answer);
    }
}

 

int형의 num1과 num2가 계산되어 정수로 반환되기 때문에 소수점을 반환할 수 없었다.

 

고로 이렇게 num1을 double형으로 변환시켜서 int형과 계산해도 더 상위의 형식인 double형으로 나오도록 했다.

public class Solution {
    public int solution(int num1, int num2) {
        double answer = Convert.ToDouble(num1) / num2 * 1000;
        return Convert.ToInt32(answer);
    }
}
public class Solution {
    public int solution(int num1, int num2) {
        double answer = (double)num1 / num2 * 1000;
        return (int)answer;
    }
}

 

 

+ C#은 파이썬과 달리 중첩 비교연산자 사용이 안된다는 사실을 알게 되었다.

틀린 예)

if (0 < angle < 90)

 

올바른 예)

if (0 < angle && angle < 90)

 

 

형변환

값을 다른 데이터 타입으로 변환시킨다.

사용자의 입력을 받을 때 유용하다.

 

double을 int로 변환시킨다.

double a = 3.14;
int b = Convert.ToInt32(a);

Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(a.GetType());

a를 사본으로 복사한 뒤, 형변환 시켜 b로 출력했기 때문에 3.14라는 값이 사라지거나 a의 데이터 타입이 바뀌지는 않는다.

 

다른 데이터 타입 간의 변환 또한 가능하다.

int c = 123;
double d = Convert.ToDouble(c) + 0.1;

int e = 321;
String f = Convert.ToString(e);

String g = "$";
char h = Convert.ToChar(g);

String i = "true";
bool j = Convert.ToBoolean(i);

Console.WriteLine(d);
Console.WriteLine(d.GetType());

Console.WriteLine(f);
Console.WriteLine(f.GetType());

Console.WriteLine(h);
Console.WriteLine(h.GetType());

Console.WriteLine(j);
Console.WriteLine(j.GetType());

'C# > C#' 카테고리의 다른 글

06. 산술 연산자(Arithmetic Operator)  (0) 2023.08.21
05. 입력(Input)  (0) 2023.08.18
03. 상수(Constants)  (0) 2023.08.16
02. 변수(Variables)  (0) 2023.08.15
01. 출력(Output)  (0) 2023.08.15
형변환

자료형들을 강제로, 혹은 자동으로 변환하는 경우가 있다. 같은 형식의 데이터 타입을 변환하기도 하고, 다른 형식의 데이터 타입 간의 변환이 이루어지기도 한다.

 

형변환의 포함관계

byte < short < int < long <<< float < double

 

용량 순서로 기억하면 편하며 정수보다는 실수가 큰 범위이다.

 

강제 형변환(명시적 형변환)

int a = 128;
short b = (short) a;
byte c = (byte) a; // -128 ~ 127

큰 데이터 타입을 작은 데이터 타입으로 변환하거나, 두 가지 데이터 타입이 자동 변환될 수 없을 때 직접 지정하여 변환하는 것이다.

변수 c처럼 -128이라는 뜬금 없는 값이 나온 이유는 byte 타입이 128이라는 숫자를 포용할 수 없기 때문에 오버플로우가 일어난 것이다.

 

자동 형변환(암시적 형변환)

int m = 80;
double n = m;

처음에 대입한 변수 m은 80이라는 정수형으로 출력되고, n은 80.0은 실수형으로 출력된다.

m에 있는 정수형 값이 n에 대입되기 전에 double로 형변환이 되기 때문에 실수형으로 출력된 것이다.

 

int e = 10;
short f = 20;

short g = (short) (e + f);

연산이 일어날 떄는 큰 범위를 따라간다. 연산에 대해서 형변환를 하고 싶다면 연산이 포함된 표현식에도 괄호()를 하여 결과물에 대해 전체를 형변환 하는 코드를 작성해야한다.

'Back-End > Java' 카테고리의 다른 글

연산자  (0) 2023.05.10
콘솔 입출력  (0) 2023.05.09
String 문자열  (2) 2023.05.09
변수와 자료형, 그리고 상수  (0) 2023.05.08
Java란?  (0) 2023.05.02

+ Recent posts