728x90
<문제 설명>
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
• 따라서 7을 return 해야 합니다.
입출력 예 #2
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
• 따라서 229를 return 해야 합니다.
이 문제를 접하기 전까지 n진법을 구하는 방법도 몰랐던 나레기...
이 문제에서 얻을 지식 : 10진수 ↔️ n진수 변환 방법
답 도출하는 과정을 설명하자면
1. 10진법으로 표현된 수를 3진법으로 변환한다. (45 -> 1200)
2. 변환한 3진법 수 앞뒤를 반전시킨다. (1200 -> 0021)
3. 반전된 수를 10진법으로 표현한다. (0021-> 7)
4. 결과값 반환
🔵10진수 -> n진수
0. toString 이용하기
// 10진수 -> n진수
String str = Integer.toString(num, n);
1. 직접 나눠서 구하기
while(num! = 0)
{
str = num%n + str;
num /= n;
}
2.
//이진수로 바꾸기
Integer.toBinaryString(num);
🟣 n 진수 -> 10진수
0. parseInt 함수 이용하기
//n진수 -> 10진수
int num = Integer.parseInt(str, n);
<알고리즘>
0️⃣. 처음부터 뒤집어진 3진수를 구하기
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
//뒤집어진 n진수 구하기
while(n!= 0)
{
str += n%3;
n /= 3;
}
//10진수 -> 3진수
answer = Integer.parseInt(str,3);
return answer;
}
}
1️⃣. 3진수를 구한다음 뒤집어서 변환
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
//3진수 구하기
while(n!= 0)
{
str = n%3 + str;
n /= 3;
}
//3진수 거꾸로 뒤집기
str = new StringBuilder(str).reverse().toString();
//10진수 -> 3진수
answer = Integer.parseInt(str, 3);
return answer;
}
}
🟠 문자열 뒤집기
: StringBuilder의 reverse메소드 사용하기
class Main {
public static void main(String[] args) {
String s = "Hello";
StringBuilder sb = new StringBuilder(s);
String reverse = sb.reverse().toString();
System.out.println(reverse);
}
}
//출력 결과 : olleH
728x90
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 2016 (1) | 2024.02.27 |
---|---|
[프로그래머스] Lv.1 [1차]비밀지도 (1) | 2024.02.26 |
[프로그래머스] Lv.1 두 개 뽑아서 더하기 (1) | 2024.02.26 |
[프로그래머스] Lv.1 K번째수 (0) | 2024.02.25 |
[프로그래머스] Lv.1 숫자 문자열과 영단어 (java) (1) | 2024.02.24 |