코딩테스트 정리(자바)
프로그래머스 - 3진법 뒤집기 (Level 1)
재히hj
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