์์ฆ ํ๊ต ํ๋ก์ ํธ๋ BoB ๋๋ฌธ์ ๋ฐ๋น ์ ํ ๋์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฑฐ์ ๋๋ค์ถ์ด ํด๋ฒ๋ ธ๋ค..
๊ทธ๋์ ๊ฐ์ ์ข ์ฐพ์ผ๋ ค๊ณ ์ค๋๋ง์ ๋ค์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ค๊ณ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ค์ด๊ฐ์ Level 1 ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์์๋ค.
๋ฌธ์ ๋ k ๋ฒ์งธ ์ ๋ผ๋ ๋ฌธ์ ์์๊ณ , ํฌ๊ฒ ์ด๋ ต์ง ์์ ๋ฌธ์ ์๋ค.
๋์ถฉ ๋ฐฐ์ด ํ๋๊ฐ ์ฃผ์ด์ง๊ณ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ i, j ๊ฐ์ด ์์ผ๋ฉด ์ฃผ์ด์ง ๋ฐฐ์ด์์ i ~ j ๊น์ง ํด๋น๋๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด ํต์ฌ์ด์๋ค.
๋๋ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ, ๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋ Arrays ํด๋์ค์ copyOfRange
๋ฉ์๋๋ฅผ ์ด์ฉํด์ ํ์ด๋ฅผ ํ ์ฌ๋์ด ์์๊ณ , copyOfRange ์ ํฅ๋ฏธ๊ฐ ์๊ฒจ ๋ ์์๋ณด๋ ค ํ๋ค.
copyOfRange ๋ก ๋ฐฐ์ด ๋ณต์ฌํ๊ธฐ
- ์ค๋ผํด ๊ณต์ ๋ฌธ์ Arrays.class;
๊ณต์ ๋ฌธ์์์ copyOfRange ๋ ๋ค์๊ณผ ๊ฐ์ด ํํํ๋ค.
Copies the specified range of the specified array into a new array.
ํน์ ๋ฒ์์ ๋ฐ๋ผ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค๋ ๊ฒ์ด๋ค.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8 };
int[] refinedArray = Arrays.copyOfRange(array, 2, 6);
System.out.println(Arrays.toString(refinedArray));
}
}
Arrays.copyOfRange(์๋ณธ ๋ฐฐ์ด, ์์ ์ธ๋ฑ์ค, ๋ ์ธ๋ฑ์ค);
๊ทธ๋ผ ๋ฐํ ํ์ ์ผ๋ก ์๋ณธ ๋ฐฐ์ด๊ณผ ๋์ผํ ํ์ ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ค์ ๊ตฌํ์ด ์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํด์ ํ ๋ฒ ์ฐพ์๋ณด๋ ๋ค์๊ณผ ๊ฐ์๋ค.
public static int[] copyOfRange(int[] original, int from, int to) {
int newLength = to - from;
if (newLength < 0)
throw new IllegalArgumentException(from + " > " + to);
int[] copy = new int[newLength];
System.arraycopy(original, from, copy, 0,
Math.min(original.length - from, newLength));
return copy;
}
- ๋ฐฐ์ด์ size ๋ฅผ ๋ ์ธ๋ฑ์ค์์ ์์ ์ธ๋ฑ์ค ๋งํผ ์ฐจ๊ฐํ ๊ฐ์ผ๋ก ์๋กญ๊ฒ ํ ๋นํ๋ค.
- ๋ง์ฝ size ๊ฐ ์์์ผ ๊ฒฝ์ฐ, from ์ด to ๋ณด๋ค ํฐ ๊ฒฝ์ฐ๋ IllegalArgumentException ์ ๋ฐํํ๋ค.
- System ์
arraycopy
ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ณต์ฌ๋ณธ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
์ฅ? System.arraycopy()
์ ๋ํด์ ๋ด์ผ๊ฒ ๋ค.
์... ๊ทธ๋ฅ ๋ฐฐ์ด์ copy ํ๋ค๊ณ ํ๋ค..
์๋ฌดํผ ์ด๋ ๊ฒ ๋ ํ๋์ ์คํฌ์ ๋ฐฐ์ ๋ค!
๋๊ธ