[programmers] 2์ ์์ญ - Java
์ฃผ์ด์ง ์ ์ ๋ฐฐ์ด์์ 2๊ฐ ๋ชจ๋ ํฌํจ๋ ๊ฐ์ฅ ์์ ์ฐ์๋ ๋ถ๋ถ ๋ฐฐ์ด์ ๋ฐํํ๋ ๋ฌธ์ ์ ๋ํ ์๋ฐ ์๋ฃจ์
์ฝ๋์
๋๋ค. ๋ฐฐ์ด์ ์ํํ๋ฉฐ 2๊ฐ ๋ํ๋๋ ์ฒซ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ณ , ํด๋น ๋ถ๋ถ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค. 2๊ฐ ์๋ ๊ฒฝ์ฐ [-1]์ ๋ฐํํฉ๋๋ค.
Jan 11, 2024
๋ฌธ์ ์ค๋ช
์ ์ ๋ฐฐ์ด
arr
๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ฐฐ์ด ์์ 2๊ฐ ๋ชจ๋ ํฌํจ๋ ๊ฐ์ฅ ์์ ์ฐ์๋ ๋ถ๋ถ ๋ฐฐ์ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.๋จ,
arr
์ 2๊ฐ ์๋ ๊ฒฝ์ฐ [-1]์ return ํฉ๋๋ค.์ ํ์ฌํญ
- 1 โค
arr
์ ๊ธธ์ด โค 100,000 - 1 โค
arr
์ ์์ โค 10
์ ์ถ๋ ฅ ์
arr | result |
[1, 2, 1, 4, 5, 2, 9] | [2, 1, 4, 5, 2] |
[1, 2, 1] | [2] |
[1, 1, 1] | [-1] |
[1, 2, 1, 2, 1, 10, 2, 1] | [2, 1, 2, 1, 10, 2] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
- 2๊ฐ ์๋ ์ธ๋ฑ์ค๋ 1๋ฒ, 5๋ฒ ์ธ๋ฑ์ค๋ฟ์ด๋ฏ๋ก 1๋ฒ๋ถํฐ 5๋ฒ ์ธ๋ฑ์ค๊น์ง์ ๋ถ๋ถ ๋ฐฐ์ด์ธ [2, 1, 4, 5, 2]๋ฅผ return ํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
- 2๊ฐ ํ ๊ฐ๋ฟ์ด๋ฏ๋ก [2]๋ฅผ return ํฉ๋๋ค.
์
์ถ๋ ฅ ์ #3
- 2๊ฐ ๋ฐฐ์ด์ ์์ผ๋ฏ๋ก [-1]์ return ํฉ๋๋ค.
์
์ถ๋ ฅ ์ #4
- 2๊ฐ ์๋ ์ธ๋ฑ์ค๋ 1๋ฒ, 3๋ฒ, 6๋ฒ ์ธ๋ฑ์ค์ด๋ฏ๋ก 1๋ฒ๋ถํฐ 6๋ฒ ์ธ๋ฑ์ค๊น์ง์ ๋ถ๋ถ ๋ฐฐ์ด์ธ [2, 1, 2, 1, 10, 2]๋ฅผ return ํฉ๋๋ค.
โป 2023๋
04์ 27์ผ ์
์ถ๋ ฅ ์, ์
์ถ๋ ฅ ์ ์ค๋ช
๋ฐ ์์ ํ
์คํธ ์ผ์ด์ค๊ฐ ์์ ๋์์ต๋๋ค.
solution.java
import java.util.Arrays; class Solution { public int[] solution(int[] arr) { // ์ด๊ธฐ๊ฐ์ผ๋ก ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง ๋ณ์๋ฅผ ์ค์ int firstIndex = 100000, lastIndex = 0; // ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ซ์ 2๊ฐ ๋ํ๋๋ ์ฒซ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ for (int i = 0; i < arr.length; i++) { if (arr[i] == 2) { firstIndex = Math.min(firstIndex, i); lastIndex = Math.max(lastIndex, i); } } // ๋ง์ฝ ์ซ์ 2๊ฐ ๋ฐฐ์ด ์์ ์กด์ฌํ๋ค๋ฉด ํด๋น ๋ถ๋ถ ๋ฐฐ์ด์ ๋ฐํ if (firstIndex <= lastIndex) { return Arrays.copyOfRange(arr, firstIndex, lastIndex + 1); } else { // ๊ทธ๋ ์ง ์๋ค๋ฉด {-1}์ ๋ฐํ return new int[]{-1}; } } }
ํต์ฌ ํค์๋
- Math.min() ๋ฉ์๋์ Math.max() ๋ฉ์๋๋ฅผ ํตํด ๋ฐฐ์ด์ ์ํํ๋ฉฐ ์ซ์ 2๊ฐ ๋ํ๋๋ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ ์ ์๋ค.
- Arrays.copyOfRange() ๋ฉ์๋๋ ๋์ ๋ฐฐ์ด์ ์ง์ ๋ ๋ฒ์๋ฅผ ์ ๋ฐฐ์ด๋ก ๋ณต์ฌํ๋ค. ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ์์ค ๋ฐฐ์ด, ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ๋ณต์ฌํ ๋ฒ์์ ์์ ์ธ๋ฑ์ค, ์ธ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ๋ณต์ฌํ ๋ฒ์์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ด๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ๋ฐฐ์ด ๋ด์์ ํน์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋๋ฐ ๋ฌธ์ ๋ฅผ ๊ฒช์๊ณ , ์ด๋ฅผ Math.min() ๋ฉ์๋์ Math.max() ๋ฉ์๋๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์๋ค.
๋ํ ์ฐ์๋ ๋ถ๋ถ ๋ฐฐ์ด์ ๊ตฌํ๋๋ฐ๋ ์ด๋ ค์์ ๊ฒช์๋๋ฐ Arrays.copyOfRange() ๋ฉ์๋์ ์ฌ์ฉ๋ฒ ๋ํ ์ ์ ์์๋ค.
Share article