프로그래머스 - 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
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 문자열 내 p와 y의 개수 (Level 1) (2) | 2024.01.02 |
|---|---|
| 프로그래머스 - 이진 변환 반복하기 (Level 2) (0) | 2023.12.31 |
| 프로그래머스 - 이상한 문자 만들기 (Level 1) (0) | 2023.12.30 |
| 프로그래머스 - 시저 암호 (Level 1) (0) | 2023.12.28 |
| 프로그래머스 - 거리두기 확인하기(Level 2) (2) | 2023.12.28 |