์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Lv.1] K๋ฒˆ์งธ ์ˆ˜

๋ฒผ๋ฆฌ01 2024. 6. 17. 16:27

๋ฌธ์ œ ์„ค๋ช…

๋ฐฐ์—ด `array`์˜ `i`๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ `j`๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€ ์ž๋ฅด๊ณ  ์ •๋ ฌํ–ˆ์„ ๋•Œ, `k`๋ฒˆ์งธ์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด `array`๊ฐ€ `[1, 5, 2, 6, 3, 7, 4]`, `i = 2`, `j = 5`, `k = 3`์ด๋ผ๋ฉด `array`์˜ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅด๋ฉด `[5, 2, 6, 3]`์ž…๋‹ˆ๋‹ค. 1์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋ฉด `[2, 3, 5, 6]`์ž…๋‹ˆ๋‹ค. 2์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์˜ 3๋ฒˆ์งธ ์ˆซ์ž๋Š” 5์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด `array`, `[i, j, k]`๋ฅผ ์›์†Œ๋กœ ๊ฐ€์ง„ 2์ฐจ์› ๋ฐฐ์—ด `commands`๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, `commands`์˜ ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•ด ์•ž์„œ ์„ค๋ช…ํ•œ ์—ฐ์‚ฐ์„ ์ ์šฉํ–ˆ์„ ๋•Œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

๐Ÿ“Œ๋ถ€๋ถ„ ๋ฐฐ์—ด ๊ตฌํ•˜๊ธฐ

java.util ํŒจํ‚ค์ง€์˜ `Arrays` ํด๋ž˜์Šค์—๋Š” ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” static ๋ฉ”์†Œ๋“œ๋กœ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. java.util ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ import๋ฌธ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํŠน์ • ๊ธธ์ด๋งŒํผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜

`copyOf()`

์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์›๋ณธ ๋ฐฐ์—ด์„ ์ „๋‹ฌ๋ฐ›๊ณ  ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ณต์‚ฌํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. 

 

import java.util.Arrays;

// ...

int[] arr = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 3);

// arr2 = {1, 2, 3};

 

 

 

ํŠน์ • ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋งŒ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜

`copyOfRange()`

์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์›๋ณธ ๋ฐฐ์—ด์„ ์ „๋‹ฌ๋ฐ›๊ณ  ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฅผ, ์„ธ๋ฒˆ์งธ ์ธ์ž๋กœ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ๋  ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

 

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 2, 4);

// arr2 = {3, 4}

 

 

 

 

๐Ÿ“Œ๋ฐฐ์—ด ์ •๋ ฌํ•˜๊ธฐ

`Arrays` ํด๋ž˜์Šค์˜ `sort()` ๋ฉ”์†Œ๋“œ๋Š” ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค€๋‹ค.

 

int[] arr = {2, 5, 3, 4, 1};
Arrays.sort(arr);

// arr = {1, 2, 3, 4, 5};

 

 

 

๐Ÿ“Œํ’€์ด

1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด `array`๋ฅผ i๋ถ€ํ„ฐ j๊นŒ์ง€ ์ž๋ฅธ ๋’ค k๋ฒˆ์งธ์˜ ์›์†Œ๋ฅผ ๊ตฌํ•œ๋‹ค. ํ•ด๋‹น ์›์†Œ๋ฅผ answer ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2. `commands`์˜ ์ธ๋ฑ์Šค 0์€ i, 1์€ j, 2๋Š” k๊ฐ€ ๋œ๋‹ค. 

3. ์ž„์‹œ ๋ฐฐ์—ด temp์— array๋ฅผ i๋ถ€ํ„ฐ j๊นŒ์ง€ ์ž๋ฅธ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ๋„ฃ์€ ๋’ค, temp์˜ k๋ฒˆ์งธ ์›์†Œ๋ฅผ answer์— ๋„ฃ๋Š”๋‹ค.

 

๋‹จ, i ๋˜๋Š” k๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค k - 1 ์˜ ์›์†Œ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ 1์„ ๋นผ์ค€๋‹ค.

 

 

 

์ „์ฒด ์ฝ”๋“œ

 

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int[] temp = {};
        
        // i๋ถ€ํ„ฐ j๊นŒ์ง€ ์ž๋ฅธ ๋’ค k๋ฒˆ์งธ์˜ ์›์†Œ๋ฅผ ๊ตฌํ•œ๋‹ค.
        // commands์˜ ์ธ๋ฑ์Šค 0์€ i, 1์€ j, 2๋Š” k
        // ์ž„์‹œ ๋ฐฐ์—ด temp์— array๋ฅผ i๋ถ€ํ„ฐ j๊นŒ์ง€ ์ž๋ฅธ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ๋„ฃ์€ ๋’ค, temp์˜ k๋ฒˆ์งธ ์›์†Œ๋ฅผ answer์— ๋„ฃ๋Š”๋‹ค.
        
        for(int i = 0; i < commands.length; i++){
            temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2] - 1];
        }
        
        
        return answer;
    }
}

 

 

 

 

 

 

 

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr