다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Q6 {
public static void main(String args[]){
int a = 0, ss = 0;
while(true) {
if(ss > 100) break;
++a;
ss += a;
}
System.out.print(a + ss);
}
}
풀이!.
//풀이! a = 0 , ss = 0 이고, while로 true가 나올때까지 반복
//if ss가 100보다 크면 break.
//그전까지는 a를 전위증가해주고 ss = ss+a를 해준다.
//ss>100이므로 a=1로 증가, ss = 0 + 1 이 된다.
//계속 반복. a=2 , ss = 1 + 2 =3
//a=3 , ss = 3 + 3 = 6
//a=4 , ss = 6+4 = 10
//a=5 , ss = 10 + 5 = 15
//a=6 , ss = 15 + 6 = 21
//a=7 , ss = 21 + 7 = 28
//a=8 , ss = 28 + 8 =36
//a=9 , ss = 36 + 9 = 45
//a=10 , ss=45+10 =55
//a=11 , ss = 55+11 =66
//a=12 , ss = 66+12 = 78
//a=13 , ss=78+13 = 91
//a=14 , ss = 91 +14 =105 << 100이상이므로, break
//a=14이고, ss는 105가 된다.
//91이 아니라 105인 이유는 91은 100이하 이므로 break가 되지않는다! 즉 105까지 도달해서야 break가 발동되서 ss는 105가된다!
//System.out.print(a + ss); 이므로, 14+105을 하면? 정답은 119가 된다.
ss가 91인줄 알았으나 ss>100 break이므로 100보다 더 높게 찍어야 break가 된다는걸 간과했다.
다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Q5 {
public static void main(String args[]){
int a = 26;
int b = 91;
int g = 0;
int c = a < b ? a : b;
for(int i = 1; i < c; i++){
if(a % i == 0 && b % i == 0)
g = i;
}
System.out.println(g);
}
}
// 이 문제는 a 26과 b 91의 최대공약수를 찾는 문제여서 13이 정답으로 나왔지만 1도 최대공약수가 되지 않을까? 생각했다.
// 하지만 1은 최대공약수가 될 수 있지만 최대 공약수 이므로 1보다 큰 숫자 13이 정답이 된다. 수학에서 손 놓은지 너무 오래되서 까먹었다!
if(a % i == 0 && b % i == 0) 으로 구성된 코드는 최대공약수를 묻는 코드이다. 보면 바로 알 수 있게 암기를 하고.
최대공약수는 1도 되지만 더 큰 수가 나오면 그게 정답이 된다... 수학을 손 놓은지 오래되서 이걸 까먹어서 GPT에게 물어봤다.
'📜✏️노트 자리없어서 적는 IT 지식📜✏️' 카테고리의 다른 글
정처산기 자주 틀리는 문제. (2) | 2025.04.08 |
---|---|
[오답노트] 정처산기 프로그래밍 언어 문제풀이 (0) | 2025.03.30 |
정처산기 문제 기준 학습하기 : HW 관련 기술 (0) | 2025.03.24 |
정처산기 서버개발 ~ SW 관련 신기술 (4) | 2025.03.22 |
정처산기 네트워크 관련장비 ~ (1) | 2025.03.20 |