본문 바로가기

📜✏️노트 자리없어서 적는 IT 지식📜✏️

정처산기 프로그래밍 언어 문제 풀이.

다음 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에게 물어봤다.