3진법 뒤집기

송준희·2021년 1월 7일
0

알고리즘

목록 보기
4/44

이 문제는 예전에 다른 2진법 관련 문제를 풀어봤다면 쉽게 해결할 수 있을 것이다.

풀이는 간단하다.

먼저 입력값 n을 받는다.

ex) 45 (45를 3진법으로 나타내면 1200이 되고 이를 뒤집으면 0021이 될 것이다)

n(45)을 3으로 나눈 나머지를 list에 저장하면 list에 뒤집힌 값 '0021'이 저장될 것이다.

뒤집힌 상태(0021)에서 10진법으로 나타내기 위해서는 length - i를 통해 맨 끝 자리부터 계산해야 한다.

ex) '1(length-0)'×1 + '2(length-1)'×3 + '0(length-2)'×9 + '0(length-3)'×27 = 7

(첫 자리부터 계산해도 마찬가지로 length + i를 계산해야 할 것이다)

즉, 자리수가 늘어나면 length - i를 계산하는 횟수가 증가한다.


처음부터 list를 뒤집어 1200으로 계산을 하면

맨 앞부터 차례대로 계산해주면 되기 때문에 앞의 연산 과정을 줄일 수 있다.

문제풀이

profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글