과제1
- 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
풀이 :
위 문제에서 var1 과 var 2는 int 타입의 변수이다. 따라서 var1/var2 연산은 정수끼리의 연산이기 때문에 결과도 정수만 출력이 되어 2.5가 아닌 2가 된다. 이 연산을 2.5라는 실수타입의 값으로 변환하기 위해 다음과 같은 방법이 있다.
- double var3 = (double) var1/var2
- double var3 = var1/(double) var2
- double var3 = (double) var1/ (double) var2
이렇게 int 타입을 double 타입으로 변환해 값을 출력하면 5 라는 값을 얻을 수 있다.
과제 2
- 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)
풀이:
증감연산자 ++x 는 다른 연산을 수행하기 전에 이미 값이 1 증가되었기 때문에 12가 된다. 그리고 증감연산자 y--의 경우 다른 연산을 수행하고 나서 값이 -1 되기 때문에 19가 된다. 12+19의 값인 31이 출력된다.
과제3
- while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.
① 원하는 숫자의 랜덤 숫자를 출력하는 매소드 Math.random()
- 이 메소드는 0.0과 1.0 사이에 속하는 double 타입의 난수 하나를 리턴한다. 0.0 <= Math.random<1.0
- start부터 시작하는 n개의 정수 중에서 임의의 정수 하나를 얻기 위한 연산식은 다음과 같다
- int num = (int)(Math.random()*n) + start;
- int num = (int) (Math.random() * (최댓값-최소값+1)) + 최소값
- 예시) 1 ~ 6 까지의 랜덤 숫자 6가지 출력→ (int) (Math.random() * 6) + 1
- (int) (Math.random() * (6-1+1)) + 1
- 예시) 12 ~ 24까지의 랜덤 숫자 10가지 출력
(int) (Math.random() * 13) + 12
② 따라서 이 문제는 변수 두개를 설정하고, 각각 랜덤값을 지정한 뒤, 반복문 while(true)로 계속해서 돌리다가 둘의 합이 5 일 때 break; 로 멈춰주면 원하는 값을 출력할 수 있다.
'알고리즘' 카테고리의 다른 글
[06] 두 정수 사이의 합 JAVA (0) | 2022.11.21 |
---|---|
[05] 가운데 글자 가져오기 JAVA (0) | 2022.11.21 |
[04] 짝수와 홀수 JAVA (0) | 2022.11.21 |
[03] 직사각형 별찍기 JAVA (0) | 2022.11.21 |
[02] 22.11.18 (10문제) (0) | 2022.11.19 |