๐Ÿ Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] 2์ฐจ์›์œผ๋กœ ๋งŒ๋“ค๊ธฐ(์ž๋ฐ”)

Dhey 2023. 3. 31. 18:23
๋ฐ˜์‘ํ˜•

โžฐ๋ฌธ์ œ

์ •์ˆ˜ ๋ฐฐ์—ด num_list์™€ ์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. num_list๋ฅผ ๋‹ค์Œ ์„ค๋ช…๊ณผ ๊ฐ™์ด 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ” returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

num_list๊ฐ€ [1, 2, 3, 4, 5, 6, 7, 8] ๋กœ ๊ธธ์ด๊ฐ€ 8์ด๊ณ  n์ด 2์ด๋ฏ€๋กœ num_list๋ฅผ 2 * 4 ๋ฐฐ์—ด๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. 2์ฐจ์›์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ์—๋Š” num_list์˜ ์›์†Œ๋“ค์„ ์•ž์—์„œ๋ถ€ํ„ฐ n๊ฐœ์”ฉ ๋‚˜๋ˆ  2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

 

num_list n result
[1, 2, 3, 4, 5, 6, 7, 8] 2 [[1,2], [3,4], [5,6], [7,8]]

 

 

์ œํ•œ์‚ฌํ•ญ

  • num_list์˜ ๊ธธ์ด๋Š” n์˜ ๋ฐฐ ์ˆ˜๊ฐœ์ž…๋‹ˆ๋‹ค.
  • 0 ≤ num_list์˜ ๊ธธ์ด ≤ 150
  • 2 ≤ n < num_list์˜ ๊ธธ์ด

 


์ž…์ถœ๋ ฅ ์˜ˆ

num_list n result
[1, 2, 3, 4, 5, 6, 7, 8] 2 [[1,2], [3,4], [5,6], [7,8]]
[100, 95, 2, 4, 5, 6, 18, 33, 948] 3 [[100, 95, 2], [4, 5, 6], [18, 33, 948]]

 


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

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

  • num_list๊ฐ€ [1, 2, 3, 4, 5, 6, 7, 8] ๋กœ ๊ธธ์ด๊ฐ€ 8์ด๊ณ  n์ด 2์ด๋ฏ€๋กœ 2 * 4 ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•œ [[1, 2], [3, 4], [5, 6], [7, 8]] ์„ returnํ•ฉ๋‹ˆ๋‹ค.

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

  • num_list๊ฐ€ [100, 95, 2, 4, 5, 6, 18, 33, 948] ๋กœ ๊ธธ์ด๊ฐ€ 9์ด๊ณ  n์ด 3์ด๋ฏ€๋กœ 3 * 3 ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•œ [[100, 95, 2], [4, 5, 6], [18, 33, 948]] ์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

 


 

๐Ÿ’กํ’€์ด

โญ์ œ์ถœ ์ฝ”๋“œ (for๋ฌธ๋งŒ ํ™œ์šฉ)

class Solution {
    public int[][] solution(int[] num_list, int n) {
        int[][] answer = new int[num_list.length/n][n];
        int idx = 0;
        
        for(int i=0; i<answer.length; i++){
            for(int j=0; j<n; j++){
                answer[i][j] = num_list[idx];
                idx++;
            }
        }
        return answer;
    }
}

answer์˜ ๊ธธ์ด๋Š” num_list ๊ธธ์ด๋ฅผ n์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด๋ฏ€๋กœ num_list.length/n์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ ,

๊ฐ ๋ฐฐ์—ด๋งˆ๋‹ค n๊ฐœ์”ฉ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ answer = new int[num_list.length/n][n]; ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. 

 

 

2์ค‘ for๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌanswer[0][j]์— num_list์˜ 0~n-1๋ฒˆ์งธ๊นŒ์ง€ n๊ฐœ ๋„ฃ์–ด์ฃผ๊ณ , answer[1][j]์— num_list์˜ n~(n-1)๋ฒˆ์งธ๊นŒ์ง€ n๊ฐœ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ ,

 

์ด๋ฅผ answer์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

 

Arrays์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

 

โญArrays.copyOf() ๋ฉ”์†Œ๋“œ ํ™œ์šฉ ์ฝ”๋“œ

import java.util.Arrays;

class Solution {
    public int[][] solution(int[] num_list, int n) {
        int[][] answer = new int[num_list.length/n][n];
        int idx = 0;
        
        for(int i=0; i<answer.length; i++){
            answer[i] = Arrays.copyOfRange(num_list, idx, idx+(n));
            idx += n;
        }
        return answer;
    }
}

์œ„ ์ฝ”๋“œ๋Š” Arrays์˜ copyOfRange() ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ์ด๋‹ค.

 

 

Arryas.copyOfRange ๋ฉ”์†Œ๋“œ๋Š”

Arrays.copyOfRange(๋ณต์‚ฌํ•˜๊ณ ์žํ•˜๋Š” ๋ฐฐ์—ด, ์‹œ์ž‘ ์ธ๋ฑ์Šค, ๋์ธ๋ฑ์Šค); ๋กœ ์„ ์–ธํ•ด์ฃผ๋Š”๋ฐ,

 

- ๋ณต์‚ฌํ•˜๊ณ ์žํ•˜๋Š” ๋ฐฐ์—ด: num_list

- ์‹œ์ž‘ ์ธ๋ฑ์Šค: idx      -> 0

- ๋ ์ธ๋ฑ์Šค: idx+n    ->  n๊ฐœ์”ฉ ๋‚˜๋ˆ ์ฃผ๋ฏ€๋กœ

 

 

for๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด

answer[0]์— ์ธ๋ฑ์Šค 0~n-1๊นŒ์ง€ n๊ฐœ๋งŒํผ ๋„ฃ์–ด์ฃผ๋ฏ€๋กœ answer[0][n]์˜ ๋ฐฐ์—ด์ด ๋˜๊ณ , idx๋Š” n๋งŒํผ ์ฆ๊ฐ€.

answer[1]์—๋„ n~(n+n-1)๊นŒ์ง€ n๊ฐœ๋งŒํผ ๋„ฃ์–ด์ฃผ๋ฏ€๋กœ answer[1][n]์˜ ๋ฐฐ์—ด์ด ๋œ๋‹ค.

 

์ด๋ฅผ answer์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ , answer์„ return ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

 

์ž์„ธํ•œ copyOfRange() ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ๋ฒ•์€ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด ๋‘์—ˆ์œผ๋‹ˆ ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

 

[Java] ๋ฐฐ์—ด ๋ณต์‚ฌํ•˜๊ธฐ Arrays.copyOf()

์ž๋ฐ”์˜ Arrays์—์„œ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. copyOf()์™€ copyOfRange() ์ด๋‹ค.

dhdh-study.tistory.com

 

 

 


**์‹คํ–‰์‹œ๊ฐ„ ๋น„๊ต

์™ผ) for๋ฌธ ํ™œ์šฉ  /  ์˜ค) Arrays๋ฉ”์†Œ๋“œ ํ™œ์šฉ

์œ„์˜ ๋‘ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋น„๊ตํ•ด๋ณด๋ฉด for๋ฌธ์„ ํ™œ์šฉํ–ˆ์„ ๋•Œ์˜ ์‹œ๊ฐ„์ด ๋” ์งง๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•