PS/Programmers
[level1, 진법] 3진법 뒤집기
git-sun
2023. 3. 21. 20:43
1. 문제

2. 문제 해결 논리
- 문제 이해
- 주어진 것
- int n // 10진법으로 주어진 수
- 요구되는 것
- int answer // 3진법으로 바꾸고 역순 정렬 후, 10진법으로 변환한 수
- 주어진 것
- 데이터 구조 결정
- String, Integer, StringBuilder 클래스의 메서드 사용
- StringBuilder와 반복문을 사용
- 알고리즘 설계
- String, Integer, StringBuilder 클래스의 메서드
- Integer.toString을 이용한 10진법 -> n진법 변환
- StringBuilder를 이용한 역순 정렬
- Integer.parseInt를 이용한 n진법 -> 10진법 변환
- StringBuilder와 반복문
- String, Integer, StringBuilder 클래스의 메서드
3. 코드 구현
3-1. String, Integer, StringBuilder 클래스
class Solution {
public int solution(int n) {
//Integer.toString 메서드로 10진법 -> 3진법 변환
String ternary = Integer.toString(n, 3);
//StringBuilder의 reverse메서드로 역순 정렬
String reversedTernary = new StringBuilder(ternary).reverse().toString();
//Integer.parseInt 메서드로 3진법 -> 10진법 변환
int result = Integer.parseInt(reversedTernary, 3);
return result;
}
}
3-2. StringBuilder와 반복문
class Solution {
public int solution(int n) {
StringBuilder ternary = new StringBuilder();
//StringBuilder에 3진법 저장
while (n > 0) {
ternary.append(n % 3);
n /= 3;
}
int result = 0;
int factor = 1;
//StringBuilder의 마지막 요소부터 10진법으로 변환
for (int i = ternary.length() - 1; i >= 0; i--) {
result += (ternary.charAt(i) - '0') * factor;
factor *= 3;
}
return result;
}
}
* Reference
https://school.programmers.co.kr/learn/courses/30/lessons/68935#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형