프로그래머스 저주의 숫자

Apic·2023년 2월 16일
0

프로그래머스

목록 보기
88/162

💡문제 설명

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입니다.

💻코드

def solution(n):    
    j = 0
    for i in range(1, n+1):
        print(i, j)
        
        # 한 자리수 일 때
        if len(str(j)) == 1:
            j += 1
            # 3과 관련있는 수가 없을 때까지 반복
            while True:
                # 3의 배수거나 3인 숫자가 있으면 +1
                if j % 3 == 0 or str(j) == '3':
                    j += 1
                else:
                    break
        # 두 자리수 일때
        elif len(str(j)) == 2:
            j += 1
            while True:
                # 3의 배수거나 10의 자리가 3이거나 1의 자리가 3이면 +1
                if j % 3 == 0 or str(j)[1] == '3' or str(j)[0] == '3':
                    j += 1
                else:
                    break
        # 세 자리수 일때
        else:
            j += 1
            while True:
                # 3의 배수거나 100의 자리가 3이거나 10의 자리가 3이거나 1의 자리가 3이면 +1
                if j % 3 == 0 or str(j)[0] == '3' or str(j)[1] == '3' or str(j)[2] == '3':
                    j += 1
                else:
                    break
    return j

https://school.programmers.co.kr/learn/courses/30/lessons/120871?language=python3

profile
코딩 공부하는 사람

0개의 댓글