문제

int order값을 받는다. 3 6 9가 포함되어있다면 박수를 친다. 박수의 횟수를 구하라

내 풀이

public int solution1(int order) {
        int answer = 0;
        // 3 6 9가 포함되어있다면 박수
        String str = String.valueOf(order);

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '3' || str.charAt(i) == '6' || str.charAt(i) == '9') {
                answer++;
            }
        }
    }

order값을 스트링으로 변환해 풀었다. for문에서 String의 i번째 단어가 3 6 9면 answer가 1씩 늘어나게 했다.\

강사님 풀이

public int solution2(int order) {
        int answer = 0;
        int count = 0;
        while (order != 0) {
            if (order % 10 == 3 || order % 10 == 6 || order % 10 == 9) {
                count++;
            }
            order = order / 10; //10으로 나눠서 점점 줄어듬 몫이 0이면 더이상나눌게없게 된 것임.
        }
        answer = count;
        return answer;
    }

order값이 12345라면
1.10으로 나눈 나머지를 구한다 -> 5
2.order값을 10으로 나눈다. -> 정수를 나누면 정수가 나오기때문에 1234가 된다.
3.10으로 나눈 나머지를 구한다 -> 4
4.order값을 10으로 나눈다. -> 정수를 나누면 정수가 나오기때문에 123가 된다.
5.반복
6.마지막 몫을 1/10하면 0이기때문에 0이되면 멈춘다.

다른 문제풀이들에서도 한번씩 본 것이다. 자리수마다 뭔가을 알아낼때 유용할 것 같다.

+ Recent posts