Post

[Programmers] #120891 - 369게임 [Java][C++][Python]

[Programmers] #120891 - 369게임 [Java][C++][Python]

문제 링크


1. 아이디어

369게임은 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 쳐야 하므로 order에 포함된 3, 6, 9의 개수를 세어야 하는 문제다. order를 10으로 나눈 나머지가 3, 6, 9인지 판단하고 10으로 나눈 몫을 다시 10으로 나누는 과정을 반복하면 order에 포함된 3, 6, 9의 개수를 셀 수 있다.


2. 복잡도

접근시간공간
풀이$O(D)$$O(1)$

($D$ = order의 자릿수 $\approx \log_{10}(\text{order})$)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
    public int solution(int order) {
        int cnt = 0;
        while (order > 0) {
            int d = order % 10;
            if (d == 3 || d == 6 || d == 9) cnt++;
            order /= 10;
        }

        return cnt;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;

int solution(int order) {
    int cnt = 0;
    while (order > 0) {
        int d = order % 10;
        if (d == 3 || d == 6 || d == 9) cnt++;
        order /= 10;
    }

    return cnt;
}
1
2
def solution(order):
    return sum(c in "369" for c in str(order))

order를 문자열로 변환 후 각 문자가 3, 6, 9인지 세는 방식으로 간단하게 해결했다.


This post is licensed under CC BY 4.0 by the author.