โค๏ธ Problem
- ๋ฌธ์
์์ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ 3์ง๋ฒ ์์์ ์๋ค๋ก ๋ค์ง์ ํ, ์ด๋ฅผ ๋ค์ 10์ง๋ฒ์ผ๋ก ํํํ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์ ํ ์ฌํญ
- n์ 1 ์ด์ 100,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์ ์ถ๋ ฅ ์ & ์ค๋ช
no | n | result |
1 | 45 | 7 |
2 | 125 | 229 |
- 45 (10์ง๋ฒ) → 1200 (3์ง๋ฒ) → 0021(3์ง๋ฒ) → 7(10์ง๋ฒ)
๋ฐ๋ผ์ 7์ return ํด์ผ ํฉ๋๋ค. - 125 (10์ง๋ฒ) → 11122 (3์ง๋ฒ) → 22111(3์ง๋ฒ) → 229(10์ง๋ฒ)
๋ฐ๋ผ์ 229์ return ํด์ผ ํฉ๋๋ค.
๐ Solution
ํ์ด 1
class Solution {
public int solution(int num) {
int answer = 0;
String ternary = Integer.toString(num, 3);
String[] parts = ternary.split("");
for(int i=0; i<parts.length; i++) {
int tmp = Integer.parseInt(parts[i]);
answer += tmp*(Math.pow(3,i));
}
return answer;
}
}
์ฒ๋ฆฌ์๋ GOOD
ํ์ด 2
class Solution {
public int solution(int num) {
int answer = 0;
String ternary = Integer.toString(num, 3);
StringBuilder sb = new StringBuilder(ternary).reverse();
answer = Integer.parseInt(sb.toString(), 3);
return answer;
}
}
์ฒ๋ฆฌ์๋ VERY GOOD
๐ Comment
์ด ๋ฌธ์ ์์ ์๋ ์๊ตฌํ ๊ฒ์ 10์ง๋ฒ → 3์ง๋ฒ ๋ณํ → ์๋ค๋ฐ์ → 10์ง๋ฒ ๋ณํ์ธ๋ฐ ๋๋ ์ฌ์ค ํ์ด 1์์ 10์ง๋ฒ → 3์ง๋ฒ ๋ณํ → 10์ง๋ฒ ๋ณํ์ผ๋ก ์ฝ๋๋ฅผ ์งฐ๋ค.
๊ทธ ์ด์ ๋ 3์ง๋ฒ์์ 10์ง๋ฒ์ผ๋ก ๋ค์ ๋ณํํ ๋ ๋ฐ์ ์ ํ์ง ์๊ณ String[] ๋ฐฐ์ด parts์ ์์ชฝ ์ธ๋ฑ์ค๋ถํฐ 3*0, 3¹, ... 3โฟ์ ๊ณฑํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํด๋ return ๊ฐ์ด ๋๊ฐ์ด ๋์ค๊ธฐ ๋๋ฌธ์ด๋ค. ๊ตณ์ด ๋ถํ์ํ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ถ๊ฐํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํด์ ๊ทธ ๋ถ๋ถ์ ๊ฑด๋๋ฐ๊ฒ ๋์๋ค.
ํ์ง๋ง ์๊ฐํด๋ณด๋ ๋ฌธ์ ์์ ์๊ตฌํ ๋ถ๋ถ์ ๋ค ์งํค์ง ๋ชปํ ๊ฒ ๊ฐ์ ํ์ด 2์์๋ ์๋ค๋ฐ์ ์ ์ถ๊ฐํ์ฌ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋ค. StringBuilder์ reverse ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์๋ค๋ฅผ ๋ฐ์ ์ํจ ๋ค์ 3์ง๋ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ ์ฑ๋ฅ๋ ๋ ์ข์์ง๋ ํจ๊ณผ๊ฐ ์์๋ค.
[ ํ์ด 1 ]
๋จผ์ 10์ง์ num์ Integer.toString(num, 3)์ ํตํด 3์ง๋ฒ String์ผ๋ก ๋ณํํ ๋ค, ๊ฐ ์๋ฆฟ์ ํ๋ํ๋๋ฅผ String[] ๋ฐฐ์ด์ ํ๋์ฉ ๋ฃ์๋ค. ๊ทธ ๋ค์ for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ parts[i]๋ฅผ int๋ก ๋ณํํ ๋ค์ ๊ทธ ๊ฐ์ Math,pow(3, i)๋ฅผ ๊ณฑํ๋ค. Math.pow๋ ์ ๊ณฑ ๊ฐ์ ๋ง๋ค ์ ์๋ ๋ฉ์๋์ด๋ค. ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค(0)์ 3์ง๋ฒ์ ์ฒซ๋ฒ์งธ ์๋ฆฟ์๋ฅผ ๊ณฑํ๊ฒ ๋๋ค. ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ ์ฆ๊ฐํจ(n)์ ๋ฐ๋ผ ์๋ฆฟ์(3โฟ) ์ญ์ ์ฆ๊ฐํ๋๋ก ๊ตฌํํ๊ณ , ๊ทธ ๊ฐ์ answer์ ๋์ ์์ผ returnํ์๋ค.
[ ํ์ด 2 ]
10์ง์ num๋ฅผ 3์ง๋ฒ String ternary์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋์ผํ๋ค. ๊ทธ ๋ค์ StringBuilder์ ternary๋ฅผ ๋ฃ๊ณ reverse ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ญ์์ผ๋ก ๋ฌธ์์ด์ ์๋ค๋ฅผ ๋ฐ๊พธ์๋ค. ๊ทธ ๋ค์ Integer.parseInt(๋ฌธ์์ด(sb.toString(), ์ง์(3));์ ํตํด ๋ค์ 3์ง๋ฒ์ผ๋ก ์ ํํ ๊ฐ์ answer์ ๋ฃ์ด returnํ์๋ค.
'Programmers lv-1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (1) | 2022.12.12 |
---|---|
์ต์์ง์ฌ๊ฐํ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.09 |
์์ ์ํธ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (1) | 2022.12.08 |
์์ฐ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.07 |
์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.05 |
๊ฐ์ ์ซ์๋ ์ซ์ด - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.01 |
๋๊ธ