1. ๋ฌธ์ ์ค๋ช
๋ฐฐ์ด 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 ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- array์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์ ๋๋ค.
- array์ ๊ฐ ์์๋ 1 ์ด์ 100 ์ดํ์ ๋๋ค.
- commands์ ๊ธธ์ด๋ 1 ์ด์ 50 ์ดํ์ ๋๋ค.
- commands์ ๊ฐ ์์๋ ๊ธธ์ด๊ฐ 3์ ๋๋ค.
์ ์ถ๋ ฅ ์
array | commands | return |
[1, 5, 2, 6, 3, 7, 4] | [[2, 5, 3], [4, 4, 1], [7, 1, 3]] | [5,6,3] |
์ ์ถ๋ ฅ ์ ์ค๋ช
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 2๋ฒ์งธ๋ถํฐ 5๋ฒ์งธ๊น์ง ์๋ฅธ ํ ์ ๋ ฌํฉ๋๋ค. [2, 3, 5, 6]์ ์ธ ๋ฒ์งธ ์ซ์๋ 5์
๋๋ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 4๋ฒ์งธ๋ถํฐ 4๋ฒ์งธ๊น์ง ์๋ฅธ ํ ์ ๋ ฌํฉ๋๋ค. [6]์ ์ฒซ ๋ฒ์งธ ์ซ์๋ 6์
๋๋ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 1๋ฒ์งธ๋ถํฐ 7๋ฒ์งธ๊น์ง ์๋ฆ
๋๋ค. [1, 2, 3, 4, 5, 6, 7]์ ์ธ ๋ฒ์งธ ์ซ์๋ 3์
๋๋ค.
2. ์ ๊ทผ๋ฐฉ์
2-1. ๋ฌธ์ ๋จ์ํ & ํด๊ฒฐ์ฑ
Array ๋ผ๋ ๋ฐฐ์ด์ ์ฌ๋ผ์ด์ฑํด์ ํน์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ ํ ๋ฐฐ์ด์ ๋ด๋ ๋ฌธ์
๋จผ์ , ๋ฆฌํด๊ฐ์ ๋ด์์ค ๋ฐฐ์ด result๋ฅผ ์ ์ธํ๋ค.
commands.length์ ๊ธธ์ด๋งํผ Loop(for๋ฌธ)์ ๋๋ฆฌ๋ฉฐ array๋ฅผ ์ฌ๋ผ์ด์ฑ & ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ๋ค.
๋ฐ๋ณต๋ฌธ for(int i=0; i<commands.length; i++) ์ผ ๋ ์ฌ๋ผ์ด์ฑ์ด ์ํ๋๋ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
i๋ฒ์งธ์ซ์ | j๋ฒ์งธ์ซ์ | k๋ฒ์งธ์ซ์ |
commands[i][0]-1 | commands[i][1] | commands[i][2] |
์ฌ๋ผ์ด์ฑ ์์๊ฐ | ์ฌ๋ผ์ด์ฑ ๋๊ฐ | return ๋ฐฐ์ด์ ์ถ๊ฐํ ๊ฐ |
์ฌ๋ผ์ด์ฑ ๋ฒ์๊ฐ command[i][0]-1 ์์ command[i][1] ๊น์ง์ธ ์ด์ ?
๋ฌธ์ ์์ ์ธ๊ฐ์ด ๋ฐฐ์ด์ ์ธ๋ ๊ด์ต(1๋ถํฐ ์์)๊ณผ ๋ฐฐ์ด ์ธ๋ฑ์ค ์์ ๋ฒํธ(0๋ถํฐ ์์)๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค.
๋ฌธ์ ์์ '2๋ฒ์งธ ์ซ์'๋ ์ฌ์ค ๋ฐฐ์ด์ 2๋ฒ ์ธ๋ฑ์ค๊ฐ ์๋๋ผ 1๋ฒ ์ธ๋ฑ์ค ๊ฐ์ด๋ค.
๊ทธ๋์ ์ค์ ๋ก ์ฌ๋ผ์ด์ฑ ๋ฒ์๊ฐ commands[i][0]์ด ์๋๋ผ commands[i][0]-1 ๋ถํฐ ์์ํ๋ค.
๋ฐ๋ฉด, ๋๊ฐ์ commands[i][1]-1์ด ์๋ commands[i][1]์ด๋ค.
๋ฐฐ์ด ์ฌ๋ผ์ด์ฑ ํ๋ ๋ฉ์๋ Arrays.copyOfRange ๋ ๋ ์ธ๋ฑ์ค๋ฅผ ํฌํจํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
3. ๋ฌธ์ ํ์ด
- ์ฌ๋ผ์ด์ฑ ๋ฉ์๋ : Arrays.copyOfRange(๋ฐฐ์ด๋ช
, ์์๋ฒ์, ๋๋ฒ์)
- ์ค๋ฆ์ฐจ์ ์ ๋ ฌ : Arrays.sort()
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
// 1. ๊ฒฐ๊ณผ๊ฐ ๋ด์์ค ์ ์ํ ๋ฐฐ์ด result ์ ์ธ
int[] result = new int[commands.length];
for (int i = 0; i < commands.length; i++) {
// 2. array ๋ฐฐ์ด ๋๋ฉด์ ๊ฐ commands ์์์
// i๋ฒ์งธ์ซ์, j๋ฒ์งธ์ซ์๋ฅผ ์ธ์๋ก ์ฌ๋ผ์ด์ฑ
// ์ฌ๋ผ์ด์ฑํ ๋ฐฐ์ด์ slicedArray์ ๋ด์์ค
int[] slicedArray = Arrays.copyOfRange(array,
commands[i][0]-1, commands[i][1]);
// 3. ์๋ฅธ ๋ฐฐ์ด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(slicedArray);
// 4. result์ slicedArray์ k๋ฒ์งธ ์ซ์ ์ง์ด ๋ฃ๊ธฐ
result[i] = slicedArray[commands[i][2]-1];
}
return result;
}
}
4. ๊ฐ์ ์ ํ ๋ฌธ์ (์ ๋ ฌ)
https://awesomepossum.tistory.com/292