프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 저주의 숫자 3(Java)

Sigfriede 2023. 6. 5. 01:00

  문제 설명

  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;
        int count = 0;
        while (count < n) {
            answer++;
            if (answer % 3 == 0 || Integer.toString(answer).contains("3")) {
                continue;
            }
            count++;
        }
        return answer;
    }
}

  answer와 count 변수를 생성합니다.

  while문이 count가 n보다 작은 동안 반복합니다.

  answer가 1씩 증가합니다. if문에서 answer를 3으로 나는 나머지가 0이라면 즉, answer가 3의 배수인지 확인합니다. 또는 Integer 클래스의 toString 메소드를 이용하여 answer를 문자열로 변환합니다. contains 메소드를 이용하여 answer에 문자열 3이 포함되어 있는지 확인합니다. 만약 조건을 충족한다면 continue를 이용하여 이후 차례인 count를 증가시키지 않습니다.

  단순히 while문에서 answer값만 증가한다면 답에 훨씬 미치지 않는 결과를 반환합니다. answer가 연속으로 넘어갈 때가 있기 때문입니다. 예를 들어 n이 8일 때 3x 마을에서는 11을 씁니다. n이 9로 넘어갈 때, 12는 3의 배수이므로 통과, 13은 3이 들어가므로 통과, 14가 3x 마을에서 쓰는 숫자가 됩니다. 이러한 점을 고려해야 합니다.