MapleStory Finger Point

๐Ÿƒ‍โ™€๏ธprogrammers/Java

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - java ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ๋งŒ๋“ค๊ธฐ

HYEJU01 2024. 5. 9. 10:02

๐Ÿ’ก  arr ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด ์•„๋‹ˆ๋ผ๋ฉด,

๊ทธ ๋‹ค์Œ ์ตœ์†Œ์˜ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ฐ’๊นŒ์ง€ 0 ๊ฐ’์„ ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

 

 

1. arr.length ๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด๋ผ๋ฉด ?

-> 0์„ ์ถ”๊ฐ€ํ•˜์ง€์•Š๊ณ  ์›๋ž˜ ๊ฐ’๋งŒ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด๋œ๋‹ค.

 

2. arr.length ๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด ์•„๋‹ˆ๋ผ๋ฉด?

-> ์ด ์กฐ๊ฑด์‹์„ ๋งŒ๋“œ๋Š”๊ฒŒ ์กฐ๊ธˆ ๊นŒ๋‹ค๋กœ์› ๋Š”๋ฐ

์ด ๊ฒฝ์šฐ๋Š”, 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ์ง€์ˆ˜๊ฐ’ n์„ ์ˆœํšŒํ•˜๋ฉด์„œ

arr.length ๊ฐ€ 2^n ๋ณด๋‹ค ์ž‘์€ ๊ทธ ์ˆœ๊ฐ„์„ ์žก์€๋’ค (= ์ด ๋ถ€๋ถ„์ด ๋‹ค์Œ ์ตœ์†Œ์˜ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ธธ์ด๊ฐ’์ด ๋จ)

๊ทธ ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ฐ’๋งŒํผ arr ์— 0์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

(+) arr ์˜ ๊ธธ์ด๋Š” 1000๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘๋‹ค๊ณ  ์กฐ๊ฑด์ด ๋‚˜์™€์žˆ๊ธฐ ๋•Œ๋ฌธ์—

2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ฐ’์€ 1024๊ฐ€ ๋‚˜์˜ค๋Š” 10์œผ๋กœ ์žก์•„์ค€๋‹ค.

 

๐Ÿ’ฌ Math.pow(2,n)  :: ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ตฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ

import java.util.ArrayList;
import java.lang.Math;


class Solution {
    public ArrayList<Integer> solution(int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        //2์˜ ์ •์ˆ˜ ๊ฑฐ๋“ญ์ œ๊ณฑ pow(2,n) 2 4 8 16 32 ~
        int cnt = 0;
        
        for (int a : arr){
            answer.add(a); //arr ๊ฐ’ ๋„ฃ๊ธฐ
        }
        
        for (int i = 0; i <= 10; i++){ //๊ธธ์ด๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ธ์ง€
            if (arr.length == Math.pow(2,i)){ // 2๊ฑฐ๋“ญ์ œ๊ณฑ์ด๋ฉด ์ถ”๊ฐ€ ํ• ํ•„์š”์—†์Œ
                cnt = 0;
                break;
            }else if (arr.length < Math.pow(2,i)){  //6 == 24'8'1632
                cnt = i; // ์ง€์ˆ˜๊ฐ’ ์ฐพ์•„์„œ ๋„ฃ๊ธฐ 3
                break; //break ๋ฅผ ์•ˆํ•ด์ฃผ๋ฉด ๊ณ„์† ๋ˆ๋‹ค.
            }
        }
        // arr๊ธธ์ด๋ถ€ํ„ฐ ~ cnt  (๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’๊นŒ์ง€) 
        for (int j = arr.length; j<Math.pow(2,cnt); j++){ 
            answer.add(0);
        }
        
        return answer;
    }
}

 

 

 

์ฒซ๋ฒˆ์งธ ์‹œ๋„)  ์‹คํŒจ ใ… ใ… 

break  ๋ฌธ์„ ๊ฑธ์–ด์ฃผ์ง€ ์•Š์•„์„œ ๊ณ„์† for ๋ฌธ์ด ๋Œ๋ฉฐ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’์„ ์ฐพ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

import java.util.ArrayList;
import java.lang.Math;


class Solution {
    public ArrayList<Integer> solution(int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();
        //2์˜ ์ •์ˆ˜ ๊ฑฐ๋“ญ์ œ๊ณฑ pow(2,n) 2 4 8 16 32 ~
        int cnt = 0;
        
        for (int a : arr){
            answer.add(a); //arr ๊ฐ’ ๋„ฃ๊ธฐ
        }
        
        for (int i = 0; i <= 10; i++){ //๊ธธ์ด๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ธ์ง€
            if (arr.length == Math.pow(2,i)){ //3
                cnt = i; //๊ฑฐ๋“ญ์ œ๊ณฑ์ˆ˜ 
            }
        }
        // arr ๋๊ฐ’ ~ cnt + 1 (๋‹ค์Œ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’๊นŒ์ง€) 
        for (int j = arr.length-1; j<Math.pow(2,cnt+1); j++){ 
            answer.add(0);
        }
        
        // answer ๊ธธ์ด๋ž‘ ๊ฑฐ๋“ญ์ œ๊ณฑ ์‚ฌ์ด์˜ ๊ด€๊ณ„
        // (2**n) 2**10 => 512 1024
        //๊ธธ์ด๊ฐ€ 1000๊นŒ์ง€.

        return answer;
    }
}