๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

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

by carrot0911 2024. 11. 25.

๋ฌธ์ œ ์„ค๋ช…

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

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

์ œํ•œ ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

n result
45 7
125 229

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋‹ต์„ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
n (10์ง„๋ฒ•) n (3์ง„๋ฒ•) ์•ž๋’ค ๋ฐ˜์ „ (3์ง„๋ฒ•) 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„
45 1200 0021 7

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        int mok=n;
        
        List<Integer> num = new ArrayList<>();

        while(mok != 0) {
        	num.add(mok % 3);
        	mok = mok / 3;
        }

        int cnt = num.size() - 1;
        for(int i : num) {
        	answer += (int) (i * Math.pow(3,cnt--));
        }
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

  • int answer = 0 : ๋ณ€์ˆ˜ answer๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • int mok = n : ๋ณ€์ˆ˜ mok์„ n์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • List<Integer> num = new ArrayList<>( ) : ๋™์ ๋ฆฌ์ŠคํŠธ num์„ ์„ ์–ธํ•˜๊ณ  ์ƒ์„ฑํ•œ๋‹ค.
  • while (mok != 0) { } : while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ mok์ด 0์ด ์•„๋‹ ๋•Œ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • num.add(mok % 3) : mok์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•ด์„œ num ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค.
    • mok = mok / 3 : mok์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ๊ณ„์‚ฐํ•ด์„œ ๋ณ€์ˆ˜ mok์— ์ €์žฅํ•œ๋‹ค.
  • int cnt = num.size( ) - 1 : num ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์—์„œ 1์„ ๋บ€ ๊ฐ’์„ ๋ณ€์ˆ˜ cnt์— ์ €์žฅํ•œ๋‹ค.
  • for (int i : num) { answer += (int) (i * Math.pow(3, cnt--)) } : ํ–ฅ์ƒ๋œ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ num ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ณ€์ˆ˜ answer์— i * Math.pow(3, cnt--) ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. Math.pow(3, cnt--)๋Š” ๋ฐ‘์€ 3, ์ง€์ˆ˜๋Š” cnt์ด๋‹ค. cnt๋Š” ๋ฐ˜๋ณต์ด ์ง„ํ–‰๋  ๋•Œ๋งˆ๋‹ค 1์”ฉ ๊ฐ์†Œํ•œ๋‹ค.