728x90
반응형
Programmers LV1. 3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | result |
45 | 7 |
125 | 229 |
사용 언어
Java
해결 방법
문자열로 푸는 방법도 있을 것인데 숫자를 링크드 리스트에 넣어 푸는 방법으로 해결하였다.
LinkedList는 addFirst() 메서드가 있어서 나머지 숫자를 맨 앞에 추가하는 것이 간단해진다.
1. 10진법을 3진법(정순) 으로 변환한다.
2. for문을 돌리며 i를 활용하여 3진법의 맨 앞부터 10진법 수를 구한다.
알게된 것
- 3진법 계산 메서드 : Math.pow(진법, 제곱수)
코드
import java.util.LinkedList;
/*
3진법 뒤집기
*/
public class test_68935 {
public static void main(String[] args) {
solution(125);
}
static public int solution(int n) {
int answer = 0;
LinkedList<Integer> list = new LinkedList<>();
// n=45, 3진법=1200
// 10진법 -> 3진법
while(true) {
if(n<3) { list.addFirst(n); break;}
list.addFirst(n%3);
n /= 3;
}
for(int i=0; i<list.size(); i++) {
if(list.get(i) == 0) continue;
answer = answer + (int)Math.pow(3, i) * list.get(i);
}
return answer;
}
}
처음에 문자열로 푸는 방법을 시도하였는데 코드가 통과하지 못했다. 다른 풀이를 참고하여 위처럼 간단히 해결해볼 수 있었다. StringBuffer, StringBuilder 등을 활용하는 풀이도 있었는데.. 기존 방법도 충분히 무난한거같아서 패스.. (귀..귀찮아ㅠ)
728x90
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/Programmers] LV1. 문자열 내림차순으로 배치하기 (0) | 2021.05.02 |
---|---|
[알고리즘/Programmers] LV1. 체육복 (0) | 2021.04.30 |
[알고리즘/Programmers] LV1. 로또의 최고 순위와 최저 순위 (0) | 2021.04.29 |
[알고리즘/Programmers] LV1. 모의 고사 (0) | 2021.04.27 |
[알고리즘/Programmers] LV1. 폰켓몬 (0) | 2021.04.24 |