프로그래머스 - 3진법 뒤집기 (Level 1)

2023. 12. 31. 20:11코딩테스트 정리(자바)

728x90

처음 풀이

: 직접 진법 변환을 하였다

import java.util.*;

class Solution {
    public int solution(int n) {
       Stack<Integer> stack=new Stack<>();
    int mod=0; //나머지 저장할 변수
    while(n>=3){
        mod=n%3;
        stack.push(mod);
        n=n/3;
    }
    stack.push(n); //마지막 남은 것 넣기
    int cnt=0; 
    int answer = 0;
    while(!stack.empty()) {//스택이 빌 때까지
        answer+=Math.pow(3,cnt) * stack.pop();
        cnt++;
    }
    
    return answer;
    }
}

 

 

더 쉬운 풀이

public class Solution {
    public int solution(int n) {
        String str = Integer.toString(n, 3); //정수형을 문자열, 3진법으로 변환
        String reversed = new StringBuilder(str).reverse().toString(); 
        //생성자에 문자열을 넘겨주면 해당 문자열을 미리 가지고 있는 객체를 생성
        // 뒤집고 문자열로 변환
        return Integer.valueOf(reversed, 3); //정수형, 3진법으로 변환
    }
}

 

 

1. Integer.valueOf 대신

Integer.parseInt로 해도 된다

Integer.parseInt(String str);

-> 전달받은 문자열을 10진수의 정수로 변환

 

Integer.parseInt(String s, int radix)

-> 숫자를 표현하는 문자열 s를 radix 진법의 정수로 변환

 

Integer.toString(int v, int radix)

-> 정수 v를 radix 진법의 문자열로 변환

 

* Long.parseLong, Long.toString()도 있다.

728x90