-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ Kit K๋ฒ์งธ ์Algo Rhythm๐บ๐/Programmers 2020. 6. 25. 12:00
๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋ ์๋ ๋งํฌ์์ ํ์ธํ์๊ธธ ๋ฐ๋๋๋ค.
https://programmers.co.kr/learn/courses/30/lessons/42748
์ฝ๋ฉํ ์คํธ ์ฐ์ต - K๋ฒ์งธ์
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
๋๋ ์ด๋ป๊ฒ ํ์๋
import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int a = 0; a < commands.length; a++) { int i = commands[a][0]; int j = commands[a][1]; int k = commands[a][2]; int[] temp = Arrays.copyOfRange(array, i - 1, j); // 1. slice Arrays.sort(temp); // 2. sort answer[a] = temp[k - 1]; } return answer; } }
๋๋ ์ ์ ๋ ๊ฒ ํ์๋
์ง๋ฌธ์ ์ฝ์ผ๋ฉด ์ง๋ฌธ์์ ์ด๋ฏธ ์๋์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ์ํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
- ๋ฐฐ์ด์ i๋ฒ์งธ๋ถํฐ j๋ฒ์งธ ์์๊น์ง ์๋ฅธ๋ค.
- ์๋ฅธ ๋ฐฐ์ด์ sortํ๋ค.
- Sortํ ๋ฐฐ์ด์ k๋ฒ์งธ ์์๋ฅผ ๊ตฌํ๋ค.
๊ทธ๋์ ๋จผ์ ๋ฐฐ์ด์ ์๋ฅด๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํ๋ค. ์ง์ ์ฝ๋๋ฅผ ๊ตฌํํ ์๋ ์์ง๋ง 'slice ์ ๋์ ๊ธฐ๋ฅ์ java์์ ์ด๋ฏธ ์ ๊ณตํด์ฃผ์ง ์์๊น?' ๋ผ๋ ์๊ฐ์ Arrays์ javadoc์ ์ฝ์ด๋ดค๋ค.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html
์์ฝ๊ฒ๋ slice๋ผ๋ ์ด๋ฆ์ method๋ ์กด์ฌํ์ง ์์๋ค. ํ์ง๋ง ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ copyOfRange๋ผ๋ method๋ฅผ ๋ฐ๊ฒฌํ๋ค. ๊ทธ๋์ ์ด๋ฅผ ์ฌ์ฉํด sliceํ ๋ค์ sort๋ฅผ ํ๊ณ k๋ฒ์งธ (1-based ์ผ๋) ์์๋ฅผ answer์ ๋ด์์ค์ ํด๊ฒฐํ๋ค.
๋๋ ๋ฌด์์ ๋ฐฐ์ ๋
๋ ์๊ฐํ๋ ๊ฒ์ด์ง๋ง Java์ ๊ฐ์ ์ ์ญ์ Javadoc์ด๋ค. Javadoc์ ์ฝ๋ ๊ฒ์ด ๋๋ฆฌ๊ณ ๋ต๋ตํ ์ ์์ง๋ง ์ค๋ ฅ์ ์ฌ๋ฆฌ๊ธฐ์๋ ์ต๊ณ ๋ผ๊ณ ์๊ฐํ๋ค. ๋ฟ๋ง ์๋๋ผ ์ด๋ฒ ๊ธฐํ์ slice๊ธฐ๋ฅ์ ์ํํ๋ copyOfRange๋ฅผ ๋ฐฐ์ ๋๋ฐ ์์ง ์๊ณ ์ ํ์ฉํด์ผ๊ฒ ๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ