1. 문제 설명
2. 나의 풀이
public int solution(int n) {
int answer = 0;
StringBuilder sb = new StringBuilder();
while(n > 0)
{
sb.append(n%3);
n/=3;
}
sb.reverse();
for(int i = 0; i < sb.length(); i++)
{
if(i == 0)
{
answer += 1 * ((int)sb.charAt(i) - 48);
}
else
{
answer += (int)Math.pow(3, i) * ((int)sb.charAt(i) - 48);
}
System.out.println(((int)sb.charAt(i) - 48));
}
return answer;
}
3진법 자체를 처음 들어봄
이진법이 0 1 이니까 3진법 0 1 2 인가봄
3. 다른 사람의 풀이
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
a = new StringBuilder(a).reverse().toString();
return Integer.parseInt(a,3);
}
}
1. 3진법 변환 : 일단 n을 3으로 계속 나누고, 빈 문자열에 3을 나눈 나머지를 붙여줌
2. 3진법 뒤집기 : StringBuilder로 a를 바꾼다음 reverse
3. Integer.parseint 로 10진법 변환
오 Integer.parseint 에 이런 활용법이 있다니.. 깔끔한 코드 굿굿
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
while(n>0)
{
int r = n%3;
n = n / 3;
str = r + str;
}
System.out.println(str);
for(int i=0; i<str.length(); i++)
{
answer += Math.pow(3,i) * (str.charAt(i) - '0');
}
return answer;
}
}
이것도 내거랑 비슷하지만 깔끔해서 좋은듯
특히 문자열 뒤집을 필요 없이 r뒤에 str을 붙여 뒤집힌 문자열로 만드는게 진짜..똑똑하심
char - 48 맨날 48인지 49인지 헷갈리니까 그냥 -'0' 해야겠다
'코테 > java' 카테고리의 다른 글
[프로그래머스][java] lv 1 시저 암호 (0) | 2025.02.12 |
---|---|
[프로그래머스][java] lv 1 최소직사각형 (0) | 2025.01.17 |
[프로그래머스][java] lv1 이상한 문자 만들기 (0) | 2025.01.10 |
[프로그래머스][java] lv 1 부족한 금액 계산하기 (0) | 2025.01.09 |
lv 1 정수 내림차순으로 배치하기 (2) | 2024.12.20 |