728x90
반응형
1, 2, 4만 있는 나라에서 10진수를 어떻게 표현할 수 있는가? 라는 문제!
처음 딱 봤을 때 3진법으로 나타내고 0, 1, 2를 각각 매칭해주면 되겠네! 라고 간단하게 생각했다.
그러나 풀어서 생각해보니
0의 경우 단독으로 맨 앞자리에 올 수 없으므로 단순 매칭으로는 해결할 수 없다는 문제가 있었다!
숫자를 다 나열해서 비교해보며 찾아낸 규칙은
1. 3으로 나누어 떨어지지 않으면 3진법으로 나타낸 수를 그대로 사용하고
2. 3으로 나누어 떨어지는 경우 4를 대신 넣어주고, n // 3 -1 에서 이어서 계산을 해주면 된다.
이렇게 두 가지였다!
이러한 규칙만 찾아내면 간단하고, 입력으로 주어지는 숫자가 아무리 커도 시간 효율성도 따로 고려하지 않아도 충분히 계산 가능이다!
def solution(n):
answer = ''
while n :
if n % 3 != 0 : # 3으로 안나누어떨어지면
answer += str(n % 3)
n //= 3
else :
answer += "4"
n = n // 3 - 1
return answer[::-1]
728x90
반응형
'CS Study > Algorithm(Coding Test)' 카테고리의 다른 글
[Programmers] 스킬트리 (Python) (0) | 2022.03.25 |
---|---|
[Programmers] 피로도 (Python) (0) | 2022.03.24 |
[Programmers] 2019 KAKAO BLIND RECRUITMENT - 후보키 (Python) (0) | 2022.03.24 |
[Programmers] 방문 길이 (Python) (0) | 2022.03.24 |
[BOJ] 1261. 알고스팟 (Python) (0) | 2022.03.23 |