😈 알고리즘/🖥️ 프로그래머스
🖥️ 저주의 숫자 3
Buᐢ༝ᐢy
2023. 2. 17. 06: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 |
입출력 예 설명
입출력 예 #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이 무조건 들어가기 때문이다.