해당 문제는 규칙을 알면 풀 수 있는 문제라고 생각한다.
'질문하기' 보면 3진법 얘기가 있는데.... 저는 잘 모르겠습니다...🥰
나는 문제를 풀 때 규칙을 먼저 생각해보고
규칙을 찾을 때에는 테스트 케이스를 많이 써보고 관찰하고 찾아보는 식으로 한다.
내가 생각한 이 문제의 규칙은 아래와 같다.
풀이 방법
first와 last를 정하고 그 범위 안에서 3 등분하고 다시 반복하고 해서 구간을 좁게 나누는 방법!
내가 생각한 코드는 이런 식이다! 물론 내가 Python문법도 익힌 지 얼마 안 됐고 코딩을 잘하지 못해서 불필요한 게 많긴 하다...😭
코드
def solution(n):
first,last,standard=0,0,0
number=""
i,sum=1,3
while True:#n이 속해있는 범위와 first last의 값을 얻기 위해 존재.
if n<=sum:
last=sum
first=sum-3**i
break
i+=1
sum=sum+3**i
while True:#범위안에서 3등분하고 반복
standard=(last-first)/3 #범위를 좁혀나가기위해 존재.
if first<n<=first+standard:#1번째 범위
last=first+standard# first는 그대로 두고 Last 변경
number=number+"1"
elif first+standard<n<=last-standard:#2번째 범위
first=first+standard#first 변경
last=last-standard#Last 변경
number=number+"2"
elif last-standard<n<=last:#3번째 범위
first=last-standard#Last는 그대로 두고 first 변경.
number=number+"4"
if int(standard)==1:#만약 standard 1이 된거면 끝까지 돈거니까 빠져나오기.
break
return number
실행결과
앞으로 자주자주 올리면서 주석 다는 연습도 하고 어떤 식으로 풀었는지 리뷰하는 연습도 해야겠다...
물론 처음이라 리뷰도 잘못하겠고 내가 알고 있는 것을 설명하기가 어렵다...
하지만 익숙해지자!!!🥰
'코딩테스트 대비' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 (0) | 2021.04.04 |
---|---|
[프로그래머스] 메뉴 리뉴얼 (0) | 2021.04.01 |
[프로그래머스] 방문 길이 (1) | 2021.03.25 |
[프로그래머스] 멀쩡한 사각형 (0) | 2021.03.16 |
[Online IDE]알고리즘 공부-Repl.it(이것이 코딩 테스트다 with Python) (2) | 2021.01.23 |