프로그래머스
프로그래머스 - 3진법 뒤집기
leebean
2022. 5. 10. 21:10
문제 : https://programmers.co.kr/learn/courses/30/lessons/68935
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
github : https://github.com/delight-HK3/programmers_study/tree/main/programmers
GitHub - delight-HK3/programmers_study: It is a repository for storing programmers problems.
It is a repository for storing programmers problems. - GitHub - delight-HK3/programmers_study: It is a repository for storing programmers problems.
github.com
(programmers_68935_1.java, programmers_68935_2.java 파일 입니다.)

문제분석
매개변수로 임의의 정수 값을 입력받았을 때 3진수로 변형 후 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 값을 리턴해야 하는 문제입니다.
저는 두 가지 방법으로 해결했습니다.
- 3진수 형태 문자열로 변형한 후 reverse함수를 사용하여 문자열을 뒤집은 후 3진수 문자열을 10진수 정수형으로 리턴
- while문을 사용해 입력받은 값이 0 이상이면 입력값과 3을 나눈 나머지를 빈 문자열에 저장한 후 입력값을 3을 나누어 나온 몫을 다시 저장하는 방식으로 반복하여 문자열을 만든 후 정수형으로 바꾸어 리턴
문제풀이
class Solution { // 1번 방법
public int solution(int n) {
int answer = 0; // 기본으로 제공되는 변수
String str = Integer.toString(n,3);
// 3진수 로 변형
System.out.printf("3진수 = %s%n",str);
// 3진수로 변형된 값을 출력
StringBuffer test = new StringBuffer(str);
// 변경 가능한 문자열로 만들기
String reverse = test.reverse().toString();
// test를 뒤집은 후 String 형으로 형변환 후 문자열 reverse에 저장
answer = Integer.parseInt(reverse,3);
// 문자열 reverse를 10진수 정수형으로 변환 후 answer에 저장
System.out.printf("10진수 = %d%n",answer);
// 10진수로 변형된 값을 출력
return answer; // answer 리턴
}
}
public class programmers_68935_1 {
public static void main(String[] args) {
Solution sol = new Solution();
// sol이름의 참조 변수 선언과 동시에 인스턴스를 저장
sol.solution(125);
// Solution 클래스의 멤버 메서드 solution에 매개변수 125입력
}
}
class Solution { // 2번 방법
public int solution(int n) {
int answer = 0; // 기본으로 제공되는 변수
String str = ""; // 빈 문자열 선언
while(n > 0){ // n의 값이 0이상이면 반복
str = str + (n % 3); // 문자열에 n에서 3을 나눈 나머지 값을 저장
n = n / 3; // n을 3으로 나눈 후 다시 저장
}
answer = Integer.parseInt(str, 3);
// 3진수 문자열을 10진수 정수형으로 변환하여 answer에 저장
return answer; // answer 리턴
}
}
public class programmers_68935_2 {
public static void main(String[] args) {
Solution sol = new Solution();
// sol이름의 참조 변수 선언과 동시에 인스턴스를 저장
sol.solution(125);
// Solution 클래스의 멤버 메서드 solution에 매개변수 125입력
}
}