반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
** Javascript
function solution(n) {
let ternary = [];
let answer = 0;
while (n >= 1) {
if (n > 1) {
ternary.push(n % 3);
} else {
ternary.push(n);
}
n = parseInt(n / 3);
}
for (let i = 0; i < ternary.length; i++) {
answer += ternary[i] * Math.pow(3, ternary.length - 1 - i);
}
return answer;
}
toString 을 이용한 방법 효율성은 위 코드가 더 높다
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
이 식이 내 맘 속 베스트,,
function solution(n) {
const answer = [];
while(n !== 0) {
answer.unshift(n % 3);
n = Math.floor(n/3);
}
return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);
}
** Python
def solution(n):
arr = []
result = 0
while True :
if n == 0:
break
arr.append(n % 3)
n = n // 3
for i, x in enumerate(arr):
result += x * 3 ** (len(arr) - i - 1)
return result
** Java
log3N + 1 해서 자릿수 먼저 구해준 다음에 거꾸로 제곱해감
class Solution {
public int solution(int n) {
int answer = 0;
int cnt = (int) (Math.log(n) / Math.log(3));
while (cnt >= 0) {
int div = n % 3;
answer += div * Math.pow(3, cnt);
n = n / 3;
--cnt;
}
return answer;
}
}
반응형
'프로그래머스 > level 1' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2021.10.18 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 (0) | 2021.10.18 |
[프로그래머스][위클리챌린지] 8주차 최소직사각형 (0) | 2021.09.30 |
[프로그래머스] 두 개 뽑아서 더하기 (0) | 2021.09.30 |
[프로그래머스] 2016년 (0) | 2021.09.30 |