[JAVA/프로그래머스] 저주의 숫자 3

윤소영·2024년 3월 13일
0

JAVA

목록 보기
32/41

문제



문제 답안

class Solution {
    public int solution(int n) {
        int answer = 0;
        int k = 1;
        while(k <= n){
            answer++;
            if(answer % 3 != 0 && answer % 10 != 3 && answer / 10 != 3 && answer / 100 != 3 && answer / 10 != 13)
                k++;
        }
        return answer;
    }
}



답안 풀이

첨에 조건문을 잘못 써서 테케가 4,5번이 실패 했다.
이유는 130과 같은 숫자도 3이 들어가서 안되는데 if문을 첨에는 '각각의 자릿수가 3이 되면 안된다' 라는 조건을 걸어줬기 때문! (예를 들어 130이라는 숫자를 10으로 나누면 13이고 100으로 나누면 1이기 때문에 통과여서 k++가 된다!)

그래서 answer / 10 != 13 이라는 조건을 추가 해줬다.


다른 사람들의 풀이

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

        for (int i = 1; i <= n; i++) {
            answer++;
            if (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
                i--;
            }
        }

        return answer;
    }
}

String.valueOf(answer).contains("3") 을 기억하자!!

0개의 댓글