문제
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;
}
}'PS > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv.0] 로그인 성공?(Java) (0) | 2026.08.09 |
|---|---|
| [프로그래머스 Lv.0] 외계어 사전(Java) (0) | 2026.08.08 |
| [프로그래머스 Lv.0] 캐릭터의 좌표(Java) (0) | 2026.08.02 |
| [프로그래머스 Lv.0] 영어가 싫어요(Java) (0) | 2026.08.01 |
| [프로그래머스 Lv.0] 삼각형의 완성조건(2)(Java) (0) | 2026.07.29 |
댓글