본문 바로가기
  • Let's study
PS/Programmers

[프로그래머스 Lv.0] 저주의 숫자3(Java)

by 코딩고수이고파 2026. 8. 18.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120871

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

숫자를 1부터 하나씩 증가시키면서 3의 배수이거나 숫자 3이 포함된 경우는 건너뛰는 방식으로 해결할 수 있다.

answer를 하나 증가시킨 뒤, 조건에 맞지 않는 숫자라면 계속 증가시키면서 다음 숫자를 찾는다.

 

answer++;

while (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
    answer++;
}

 

여기서 answer % 3 == 0으로 3의 배수인지 확인하고, String.valueOf(answer).contains("3")을 이용해 숫자에 3이 포함되어 있는지 확인한다.

while문을 사용하는 이유는 건너뛰어야 하는 숫자가 연속해서 나올 수 있기 때문이다.

예를 들어 5 다음에는 6(3의 배수), 7, 8, 9(3의 배수), 10, 11, 12(3의 배수), 13(숫자 3 포함)처럼 여러 숫자를 연속해서 건너뛰는 경우가 발생한다.

이 과정을 n번 반복하면 저주의 숫자를 제외했을 때의 n번째 숫자를 구할 수 있다.

코드

class Solution {
    public int solution(int n) {
        int answer = 0;

        for (int i = 0; i < n; i++) {
            answer++;

            while (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
                answer++;
            }
        }
            
        return answer;
    }
}

댓글