[알고리즘] 3진법 뒤집기, 숫자의 표현,
3진법 뒤집기 - 개요
자연수 n을 3진법으로 만들어 뒤집고 뒤집은 수를 다시 10진법으로 맞추기
풀이
function solution(n) {
let answer = 0;
let str = n.toString(3).split("").reverse().join("");
answer = parseInt(parseInt(str, 3).toString(10));
return answer;
}
정수를 toString, parseInt로 진법 변환할 수 있다는 것을 처음 알았다.
parseInt(string: string, radix?: number | undefined): number
toString(radix?: number | undefined): string
숫자의 표현 - 개요
연속된 자연수들을 모두 더해서 n이 나오는 경우를 전부 찾아서 return
투포인터, 슬라이딩 윈도우방식으로 풀었다.
연속된 수들의 합 sum이 n보다 작다면 rt를 +1로 키우고 rt만큼 계속 더해준다.
sum이 n보다 커지면 lt를 -1로 줄이고 lt만큼 계속 줄여준다.
마지막에 n 자기 자신까지 +1 시켜주면 된다
function solution(n) {
let answer = 0;
let sum = 1;
let lt = 0;
let rt = 1;
while (lt !== n && rt !== n) {
if (sum === n) {
answer += 1;
lt += 1;
sum -= lt;
} else {
if (sum > n) {
lt += 1;
sum -= lt;
} else {
rt += 1;
sum += rt;
}
}
}
return answer + 1;
}