코딩테스트 연습/프로그래머스 LV.0

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

5ein 2024. 5. 1. 22:50

문제: 코딩테스트 연습 - 저주의 숫자 3 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.

10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자
1 1 6 8
2 2 7 10
3 4 8 11
4 5 9 14
5 7 10 16

정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 100

입출력 예

n result
15 25
40 76

나의 문제 풀이

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

다른 사람의 문제풀이

//다른사람풀이1
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;
    }
}

//다른사람풀이2
class Solution {
    public int solution(int n) {
        String str;
        for (int i = 1; i <= n; i++){
            str = ""+i;
            if(str.contains("3") || i%3 == 0) n++;
        }
        return n;     
    }
}

느낀점

while문 보다 다른사람의 풀이의 if문을 이용한 방법이 인상깊었다!


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)