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

Seoung Young Oh·2022년 12월 27일
0

프로그래머스

목록 보기
98/105
post-thumbnail

문제설명

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

10진법3x 마을에서 쓰는 숫자10진법3x 마을에서 쓰는 숫자
1168
22710
34811
45914
571016

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

제한사항

  • 1 ≤ n ≤ 100

입출력 예

nresult
1525
4076

입출력 예 설명

입출력 예 #1

  • 15를 3x 마을의 숫자로 변환하면 25입니다.

입출력 예 #2

  • 40을 3x 마을의 숫자로 변환하면 76입니다.

풀이

Myfunction에 들어가는 숫자에 3을 포함되거나, 
3의 배수가 아닐 때까지 재귀 함수로
반복 시켰다.
class Solution {
	
	public  int Myfunction(int n) {
		n++;
		return (n%3==0 || (n+"").contains("3")) ? Myfunction(n) : n ;
	}
    
	public int solution(int n) {
		int threeTimes = 0;

		for (int i = 1; i <= n; i++) {
			threeTimes = Myfunction(threeTimes);
		}
		return threeTimes;
	}
}
깔끔해 보이는 다른 풀이 코드도 하나 첨부한다.
원리는 재귀 함수와 비슷하다. 
기본적으로 answer값을 1증가시킨 뒤,
answer가 3을 포함되거나, 3의 배수일 때 인덱스를 감소시켜 반복문을 
한번 더 순환하게 한다.
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;
    }
}

참고

0개의 댓글