코딩테스트

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

lemonarr🍋 2025. 3. 11. 18:43

문제 설명

나의 문제 풀이

class Solution {
    public int solution(int n) {
        //3이 들어있는 모든 수 10의자리 3, 일의자리3
        //3의 배수 
        int answer = 0;
        
        for(int i =1; i<=n; i++){    //15
        System.out.println("현재 i값은 ? : " + i);
            // if(answer%3 == 0 || answer%10 == 3){
            //     answer+=1; 
            // }    //결과 값: 23, 60
            if(answer%3 == 0){
                answer+=1; 
                System.out.println("3의 배수는? : " + answer);
            }
            
            if(answer%10 == 3){
                answer+=1;  
                System.out.println("일의자리 3? : " + answer);
            }
            answer+=1;
             System.out.println("기본 +1 값은? : " + answer);
        }
      
        return answer;
    }
}

 

문제 파악하기

3의 배수, 3이 들어가는 숫자에 ++ 연산을 적용시키면 된다.

하지만 3이 들어가는 숫자 부분에서 문제 풀이가 적절치 못한 것 같다.

 

테스트 1만 통과하고 대체 왜 2는 통과 못하는 건지..혼자 끙끙 대다가 

다른 분의 문제풀이를 보니

 

 

다른 사람의 문제풀이

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;
    }
}

 

코드가 깔끔하다.

String.valueOf(answer).contains("3") 을 사용해서 깔끔하게 구현하셨다.

int라서 모든 코드를 숫자만 사용해서 풀려고 했었는데 

생각해보니 배열로 값을 도출하는 문제가 아니고 answer만 int 값이면 되는 것이란 걸 깨달았다. ㅎㅎ

자꾸 문제풀이를 완벽하게 하려고 하니까 문제에 접근하는 수준 높이는 속도가 더딘 것 같다. 

input을 일단 많이 해봐야겠다는 생각이 든다.

 

도출되는 값을 확인해볼것!!