[프로그래머스/Java] Lv.0 저주의 숫자 3

febCho·2024년 5월 30일
0

코딩테스트

목록 보기
209/253
post-thumbnail

문제

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

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

- 제한사항

  • 1 ≤ n ≤ 100

풀이

확실히 나는 규칙을 푸는 문제에 약한 것 같다. 예시로 주어진 3x 마을 사람들의 숫자 규칙 찾는데 한참의 시간을 보냈다. 나눴다가 나머지를 구했다가 차이를 찾았다가. 그러다 발견하게 된 것이 누적이었다.

우선 for문을 돌며 3의 배수, 3을 포함했는지 여부와 관계 없이 주어진 n 만큼을 answer에 더한다. 이에 더해 3을 포함하거나 3의 배수인 경우 +1을 해 저주의 숫자인 3을 피할 수 있도록 한다.

if가 아닌 while을 사용한 이유는 12 - 13과 같이 +1 해주어야 하는 조건이 연속된 경우 반영해 누적하기 위해서다. 그렇게 answer%3 == 0 3의 배수이거나, String.valueOf(answer).contains("3") 3을 포함한다면 +1을 해준다. 그렇게 주어진 수만큼 루프를 돌며 누적을 한 뒤 반환한다.

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

결과

profile
Done is better than perfect.

0개의 댓글