[ Programmers ] 3진법 뒤집기 (Java)
1. Problem 📃
[ 3진법 뒤집기 ]
https://programmers.co.kr/learn/courses/30/lessons/68935
2. Constraint 🔗
3. Solution 🔑
- 입력 받은 수 n을 3보다 작을 때 까지 나눠서 answer이라는 문자열 변수에 담아준다
- 위에 과정을 통하면 자동으로 3진법이 반전된 상태로 들어간다.
- Integer.parseInt(진법으로 표현된 값이 존재하는 변수, 3)을 이용하여 다시 10진법으로 표현.
4. Code 💻
public class Solution {
public int solution(int n) {
String answer = "";
while(n >= 3) {
answer += n % 3;
n /= 3;
}
answer += n;
return Integer.parseInt(answer, 3);
}
}
5. Growth 🍄
- 입력 받은 수 n을 3보다 작을 때 까지 나눠서 answer이라는 문자열 변수에 담아준다
- 위에 과정을 통하면 자동으로 3진법이 반전된 상태로 들어간다.
- Integer.parseInt(진법으로 표현된 값이 존재하는 변수, 3)을 이용하여 다시 10진법으로 표현.
public class Solution {
public int solution(int n) {
String answer = "";
while(n >= 3) {
answer += n % 3;
n /= 3;
}
answer += n;
return Integer.parseInt(answer, 3);
}
}
5. Growth 🍄
벨로그를 작성하면서 내가 옛날에 짠 코드를 보게 되는데 "이것을 더 줄일 수 없을까" 하고 다시 작성해보았다.
문자열 변수에 입력 받은 수(n)을 3으로 나눈 나머지를 answer변수에 더해주면서 붙여주고
나온 값은
Integer.parseInt(진법으로 표현된 변수, n진수) 를 이용하여 answer 변수를 n진수를 10진법으로 표현
내가 처음 작성한 코드 👶🏻
class Solution {
public int solution(int n) {
int temp = n;
int count = 1;
while(temp >= 3) {
temp = temp / 3;
count++;
}
int[] arr = new int[count];
int i = count;
while(i>0) {
arr[i-1] = n%3;
n = n/3;
i--;
}
int answer = 0;
for(int j = 0; j<count; j++) {
answer += Math.pow(3, j) * arr[j];
}
System.out.println(answer);
return answer;
}
}
메모리를 아껴보려고 3으로 몇번 나누어지는지 확인 후 횟수 만큼 진수를 담을 배열의 크기를 선언.
그 수를 3으로 나누어 나머지를 담아주고, for문을 통해 Math.pow(밑, 지수)를 입력해서 나오는 값을 모두 answer 변수에 담아주고 리턴하였었다.
Author And Source
이 문제에 관하여([ Programmers ] 3진법 뒤집기 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tpdlqj0514/Programmers-3진법-뒤집기-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)