Buᐢ༝ᐢy 2023. 2. 17. 06:00

코딩테스트 연습 - 저주의 숫자 3

문제 설명


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

입출력 예 설명


입출력 예 #1

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

입출력 예 #2

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

제출 코드


2023년 1월 17일

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;

    for (int i = 1; i <= n; i++)
    {
        answer++;
        while (answer % 3 == 0 || to_string(answer).find('3') == true)
        {
            if (answer == 30 || answer == 130)
            {
                answer += 10;
            }
            answer++;
        }
    }
    return answer;
}

<aside> ✏️ 사실 1부터 100까지 손으로 직접 써보면서 규칙을 이해했다…

</aside>

다행히 크기 제한이 100 이하이기 때문에 answer의 분기점에서 30과 130만 구분하여 10을 더해주면 된다. 10을 더하는 이유는 30부터 39까지 3이 무조건 들어가기 때문이다.