[프로그래머스]3진법 뒤집기

allnight5·2023년 1월 11일
0

프로그래머스

목록 보기
14/73

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

형변환이 풀이도 짧고 편하기는 한데 예상치못한 오류나
형변환시 객체를 생성하고 삭제하기때문에 오래걸릴수있으니
실제로는 사용하는것은 피하는것을 추천한다.

첫번째는 실패했었는데.. 그이유는 answer =으로 +=는 해주지 않아서 마지막숫자만 보내줬기때문이다.

파이썬 두번째

def solution(n):
    answer = 0
    doc = []
    while n:
        doc.append(n%3)
        n //= 3
    mul = 3
    for i in range(len(doc)-1, 0, -1):
        answer += doc[i-1]*mul
        mul *= 3 
    return answer+doc[len(doc)-1]

파이썬 다른방식(int와 문자열 형변환을 통한풀이)

def solution(n):
    answer = 0
    doc = ''
    while n:
        doc += str(n%3)
        n //= 3
    answer = int(doc, 3)
    return answer

자바 큐를 이용한 풀이

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Solution {
    public int solution(int n) {
        int answer = 0;

        Queue<Integer> queue = new LinkedList<>();

        while (n != 0) {
            int value = n % 3;
            queue.offer(value);
            n /= 3;
        }

        while (!queue.isEmpty()) {
            int pop = queue.poll();
            answer *= 3;
            answer += pop;
        }

        return answer;
    }

}

자바 형변환을통한 풀이

public class Solution {
public int solution(int n) {
int answer = 0;

    String a = "";
    
    while(n>0){
        a = a +(n%3);
        n /= 3;
    } 
    a = new StringBuffer(a).toString();
    return Integer.parseInt(a, 3); 
} 

}

profile
공부기록하기

0개의 댓글