티스토리 뷰
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예

내 풀이
1. 3진수를 담을 array를 만든다.
2. 입력받은 n 값을 3으로 나누고 나머지를 array에 저장한다.
- n값이 0이 될때까지 나눈다.
3. 이미 array에 뒤집어서 들어간 값을 다시 10진수로 변환한다.
- 1의 자리는 3^0 * 나머지 / 2의자리는 3^1 * 나머지
- 이 공식을 적용하기 위해 count=0 변수를 만들고 Math.pow를 통해 제곱 계산을 해준다.
class Solution {
public int solution(int n) {
int answer = 0;
int moc = n;
int i =0;
int[] array = new int[100];
while(moc>0){
array[i] = moc%3;
moc /=3;
i++;
}
i--;
int count = 0;
for (; i >=0 ; i--) {
answer += array[i]*Math.pow(3,count);
count++;
}
return answer;
}
}
다른 사람 풀이
import java.util.ArrayList;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer> al = new ArrayList<>();
//3진법으로 만들기
int mok = n;
while(true) {
int mod = mok% 3;
mok = mok/3;
al.add(mod);
System.out.println("몫" +mok + "나머지"+mod);
if(mok ==0)
break;
}
// 뒤집어서 10진법으로 만들기
for(int i = 0; i<al.size(); i++ ) {
answer += (int)(al.get(al.size()-1-i) * Math.pow(3, i));
}
return answer;
}
}
ArrayList를 사용하여 int[100] 이라는 야매코드를 대체하는 것 같다.
Collection 프레임웍을 잘 활용해서 문제를 풀어야 겠다.
문제를 풀면서 10진수를 n진수로 변환하는 방법에 대해서 학습할 수 있었고,
오랫동안 까먹었던 수학 원리를 다시 학습할 수 있었다.
https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'개발 > 백준, 프로그래머스' 카테고리의 다른 글
| 프로그래머스 삼총사 [Python3] (0) | 2023.01.17 |
|---|---|
| 프로그래머스 소수찾기 [Java] (0) | 2023.01.14 |
| 프로그래머스 숫자 문자열과 영단어 [Python3] (0) | 2022.12.30 |
| 프로그래머스 나누어 떨어지는 숫자 배열 [Java] (0) | 2022.12.27 |
| 프로그래머스 겹치는 선분의 길 [Python3] (0) | 2022.12.18 |
댓글