2023. 1. 1. 16:40ㆍcode/[프로그래머스] python
문제
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
입출력 예
입출력 예 설명
입출력 예 #1
- 15를 3x 마을의 숫자로 변환하면 25입니다.
입출력 예 #2
- 40을 3x 마을의 숫자로 변환하면 76입니다.
✔풀이
def solution(n):
answer = 0
for no_three in range(1,n+1):
answer+=1
while answer%3==0 or ("3" in str(answer)):
if (answer %3==0):
answer+=1
elif ("3" in str(answer)):
answer+=1
else:
pass
return answer
📝설명
숫자는 3을 포함해도 안되고, 3의 배수여도 안된다니, 헷갈리는 문제라고 생각했다.
노트를 펼치고 숫자를 고민하다 보니, 윤곽이 보였다.
우선, for문을 통해 입력받은 수 n까지 +1 하면서 돌리고, for문 안에서 answer에 1을 더해서 십진수 숫자를 만든다.
이 때, answer이 3으로 나눠져서 나머지가 없거나, 3을 포함하고 있다면 해당 수는 저주의 수이니까,, 1을 더하도록 한다.
현재 n은 정수형이기 때문에 3이 있는지 없는지 확인하려면 문자열로 바꿔야해서 str()을 사용했고, 확인하는 숫자 3역시 문자열로 변환해서 확인하도록 했다.
나는 if, elif, else를 통해 경우를 나눴지만, 실은 3으로 나눠서 나머지가 0인 경우와 숫자가 3을 포함하고 있을 때 더하는 숫자가 1로 똑같기 때문에 굳이 나눌 필요는 없다.
➕개선한다면?
👑모범 답안
🔎 개선사항과 같다.
👀느낀 점
: 개선하면 모범 답안과 같지만, 실제로 제출한 코드는 불필요한 부분을 갖고 있었다.
코드가 잘 돌아가더라도, 내 코드를 살펴보는 습관을 가져야 할 것 같다.
💻 문제 출처
'code > [프로그래머스] python' 카테고리의 다른 글
[코딩 테스트 연습 입문] 삼각형의 완성조건 (2) (0) | 2023.01.02 |
---|---|
[코딩 테스트 연습 입문] 숨어있는 숫자의 덧셈 (2) (0) | 2023.01.02 |
[코딩 테스트 연습 입문] 로그인 성공? (0) | 2022.12.30 |
[코딩 테스트 연습 입문] 외계어 사전 (0) | 2022.12.30 |
[코딩 테스트 연습 입문] 종이 자르기 (0) | 2022.12.30 |