๐ฅDAY +10
https://programmers.co.kr/learn/courses/30/lessons/68935?language=java
> ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด ๋๋ณด๊ธฐ ํด๋ฆญ!
๋ฌธ์ ์ค๋ช
์์ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ 3์ง๋ฒ ์์์ ์๋ค๋ก ๋ค์ง์ ํ, ์ด๋ฅผ ๋ค์ 10์ง๋ฒ์ผ๋ก ํํํ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- n์ 1 ์ด์ 100,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์nresult
45 | 7 |
125 | 229 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ต์ ๋์ถํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
45 | 1200 | 0021 | 7 |
- ๋ฐ๋ผ์ 7์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ต์ ๋์ถํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
125 | 11122 | 22111 | 229 |
- ๋ฐ๋ผ์ 229๋ฅผ return ํด์ผ ํฉ๋๋ค.
๐ฅ [๋ก์ง]
1. 3์ง๋ฒ์ผ๋ก ํํ ๊ฐ๋ฅํ ์ต๋ ์๋ฆฟ์ ์ฐพ์๋๊ธฐ(i)
- i๋ฅผ ์ฐจ๋ก๋ก ์ฆ๊ฐ์ํค๋ฉด์ 3์ i์ ๊ณฑ์ด ์ฃผ์ด์ง ๊ฐ์ ๋์ด์์ง ์์๋๊น์ง ์ฆ๊ฐ
if(Math.pow(3,i) > n)
2. 3์ง๋ฒ์ผ๋ก ํํ ํ ์ ์ฅํ ๋ฐฐ์ด ์ ์ธ(list)
3. 3์ง๋ฒ์ผ๋ก ํํ๋๋ ์ซ์๋ค์ ์ฐจ๋ก๋ก ์ ์ฅ
- ๋ชซ์ quo์ ์ ์ธ(์ด๊ฒ list์ ๋ด๊ธฐ๋ 3์ง๋ฒ ์ซ์๊ฐ ๋จ), ๋ด๊ธฐ๋ ์์๋ ๋ง์ง๋ง ์๋ฆฌ์๋ถํฐ!
- ๋ค์ ์๋ฆฌ์ ๊ณ์ฐ์ ํ์ํ ๋๋จธ์ง ๊ฐ์ n์ ์ ์ฅ
4. ๋ค์ง์ ์๋ฅผ 10์ง๋ฒ์ผ๋ก ๋ค์ ๊ณ์ฐํ๊ธฐ
- 0๋ถํฐ list์ ๋ด๊ธด ์ฌ์ด์ฆ๊น์ง j๋ฅผ ์ฐจ๋ก๋ก ์ฆ๊ฐ.
- ํด๋น ์๋ฆฌ ์ซ์๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ list์ ๋ด๊ธด j๋ฒ์งธ ์ซ์์ 3์ j์ ๊ณฑ์ ๊ณฑํ ๋งํผ์ ๊ฐ์ answer์ ๋ํจ
(list์ ์ฒซ๋ฒ์งธ ๋ฐฐ์ด์๋ 3์ง๋ฒ์ ๋ง์ง๋ง ์๋ฆฌ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก reverseํ๋ฉด ์๋จ.)
๐ฅ [์ต์ข ์ฝ๋]
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
int i = 0;
while(true) {
if(Math.pow(3, i) > n)
break;
i++;
}
List<Integer> list = new ArrayList<Integer>();
for(int j = i-1; j >= 0; j--) {
int quo = n/(int)Math.pow(3, j);
n -= quo * Math.pow(3, j);
list.add(quo);
}
for(int j = 0; j < list.size(); j++) {
if(list.get(j) != 0)
answer += list.get(j) * Math.pow(3, j);
}
return answer;
}
}
๐ฅ [์๊ฐ]
์ฌ์ค 3์ง๋ฒ์ผ๋ก ํํํ ๊ฐ์ ๋ค์ง์ด์ผํ๋ค๊ณ ํด์ ๋น์ฐํ Collections.reverse๋ฅผ ์ด์ฉํด์ ๊ฐ์ ๋ค์ง์๋ค..ใ
๋ด๊ฐ ์ ์ธํ ๋ฐฐ์ด์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ ์ํ์์ ํ๋ค๋ณด๋๊น ๊ดํ ์๊ฐ๋ญ๋น๋ฅผ ์ข ํ๋ ๋ฏ ํ๋คใ ใ
์ฝํ ์ค๋น๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ์ง ์ผ๋ง ๋์ง ์์ ์ฝ๋์ ๋ฏธํกํ ์ ์ด ๋ง์ ์ ์์ต๋๋ค.
๋ถ์กฑํ ์ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ์์ผ๋ก์ ํฌ์คํ ์ ๋ฐ์ํ๊ฒ ์ต๋๋ค! ๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค :)
-budtree