Back-end/Algorithm

[항해99] Java 과제 - 알고리즘 첫날/ 기본3문제

Nellie Kim 2022. 11. 18. 15:58
728x90

1. 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?

int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);

 

-> 나의 답

int var1=5;
int var2=2;
double var3=var1/var2; // 5를 2로 나누면 2.5가 되는데, var1과 var2는 int타입이기 때문에 2가 된다.
//그런데 var3은 double형식이기 때문에 2.0이 된다.
int var4=(int)(var3*var2); // var3과 var2를 곱하면 4.0이 되는데 int로 형변환을 시키면 4가 된다.
System.out.println(var4);

 

 

2. 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)

int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);

 

-> 나의 답

int x=10;
int y=20;
int z = (++x) + (y--); //x는 연산 전에 1이 증가하여 11이 되고, y는 연산 후에 1이 감소하기 때문에
//연산 전에는 그대로 20이다. 
System.out.println(z); // z는 11 + 20 = 31이 된다.

 

 

3. while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요.

눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.

시작!
(3,6)
(2,6)
(1,4)
끝!

 

-> 나의 답

public class personalStudy {
	public static void  main(String args[]) {
		while(true) {
			int a = (int)(Math.random()*6) + 1;
			int b = (int)(Math.random()*6) + 1;
			
			if(a + b == 5) {
				System.out.println("(" + a + "," + b + ")");
				break;
			}
		}
	} 
}