๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 3์ง„๋ฒ• ๋’ค์ง‘๊ธฐ

๋ฐ˜์‘ํ˜•

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 3์ง„๋ฒ• ๋’ค์ง‘๊ธฐ

https://programmers.co.kr/learn/courses/30/lessons/68935

๋ฌธ์ œ ์„ค๋ช…

์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. n์„ 3์ง„๋ฒ• ์ƒ์—์„œ ์•ž๋’ค๋กœ ๋’ค์ง‘์€ ํ›„, ์ด๋ฅผ ๋‹ค์‹œ 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • n์€ 1 ์ด์ƒ 100,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

Code

java
class Solution {
    public int solution(int n) {
        int answer = 0;
        String tmp = "";
        while(n>0){
            int a = n%3;
            tmp += a;
            n=n/3;
        }
        for(int i=0; i<tmp.length(); i++){
            answer += (tmp.charAt(i)-'0') * Math.pow(3,tmp.length()-1-i);
        }
        return answer;
    }
}

Code ์„ค๋ช…

10์ง„์ˆ˜์ธ n์„ 3์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พธ๋Š”๋ฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ์•ž๋’ค ๋ฐ˜์ „์ธ 3์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
10์ง„์ˆ˜ A๋ฅผ N์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ ๋ฐฉ์‹์€ A๋ฅผ N์œผ๋กœ ๋”์ด์ƒ ๋‚˜๋ˆŒ์ˆ˜ ์—†์„๋•Œ ๋‚˜๋ˆ„๋ฉด์„œ ๋‚˜๋จธ์ง€๋“ค์„ ๋งˆ์ง€๋ง‰ ๋‚˜๋จธ์ง€๋ถ€ํ„ฐ ์“ฐ๋ฉด ๋˜๋Š”๋ฐ, ์ฒ˜์Œ ๋‚˜๋จธ์ง€ ๋ถ€ํ„ฐ tmp์— ๋„ฃ์Œ์œผ๋กœ์จ ์•ž๋’ค ๋ฐ˜์ „์ธ 3์ง„๋ฒ•์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด 3์ง„๋ฒ•์„ 10์ง„๋ฒ•์œผ๋กœ ๋‹ค์‹œ ๋ฐ”๊ฟ” ์ฃผ์—ˆ๋‹ค.
10์ง„๋ฒˆ to 2์ง„๋ฒ•

๋ฐฐ์šด์ 

  1. ๊ฑฐ๋“ญ์ œ๊ณฑ ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
    Math.pow(n,a)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด n์˜ a์ œ๊ณฑ์„ Doubleํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
  2. String ์ธ๋ฑ์Šค ์ ‘๊ทผ
    str.charAt(i)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด str์˜ i๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์„ char๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ์–ด์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜์‘ํ˜•