https://programmers.co.kr/learn/courses/30/lessons/42862
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit ์ฒด์ก๋ณต ๋ฌธ์ ํ์ด์ด๋ค.
reserve ๋ชฉ๋ก ๋ด lost ๋ชฉ๋ก์ ๋ฃ์ด ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋น๊ตํด์ ํ์๋ค.
์ด๋ฐ์ ๋น๊ต์ ์ฝ๊ฒ ํ๋ฆฌ๋ ๋ฏ ํ๋๋ฐ ์ผ๋ถ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์คํจํ๊ณ ์คํจ ์์ธ์ ์๋์ ๊ฐ์๋ค.
- 12, 13, 18 ํ ์คํธ ์ผ์ด์ค ์คํจ
reserve ๋ชฉ๋ก๊ณผ lost ๋ชฉ๋ก์ ์ ๋ ฌ๋์ด์์ง ์์ ์ ์์ด ๋๋ ๋นํ ์ฌ๋์ ์, ๋ค ๋ชจ๋ ์ฌ๋ฒ์ท์ด ์์ ๋ ๋ท ์ฌ๋์๊ฒ ๋จผ์ ๋น๋ ค์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ๊ฐ ๋ชฉ๋ก์ ์ ๋ ฌํด์ฃผ์ด์ผ ํ๋ค.
- 5, 12 ํ ์คํธ ์ผ์ด์ค ์คํจ
๋๋ ๋นํ ์ฌ๋์ด ์ฌ๋ฒ ์ท์ด ์์ ๋๋ ๋จ์ ์ฒด์ก๋ณต์ด ํ๋๋ก ๋ณธ์ธ์ด ์ ์ด์ผ ํด์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋น๋ ค์ฃผ์ง ๋ชปํ๋ค. ๋จ์ํ ์ ์ ์ ์๋ ์ฌ๋์ ์๋ง ๋๋ฆฌ๋๊ฒ ์๋๋ผ ๋ณธ์ธ์ด ์ ์ด์ผ ํ๋๋ฐ ๋จ์๊ฒ ๋จผ์ ๋น๋ ค์ฃผ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ์ง ์๋๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
n: 3 / lost: [1, 2] / reserve: [2, 3] ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด ์ ๋ต์ 2๊ณ , 1์๊ฒ 2๊ฐ ๋น๋ ค์ฃผ๊ฒ ๋๋ฉด ์ ๋๊ธฐ ๋๋ฌธ์ removeAll()๋ก ๋ ๋ชฉ๋ก์ ๋น๊ตํด ์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ฆฌ์คํธ์์ ๋ฏธ๋ฆฌ ์ง์์ฃผ์ด์ผ ํ๋ค.
import java.util.stream.Collectors;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// int[] to List<Integer>
List<Integer> lostList = Arrays.stream(lost).boxed().collect(Collectors.toList());
List<Integer> reserveList = Arrays.stream(reserve).boxed().collect(Collectors.toList());
// ๋๋ ๋นํ ์ฌ๋์ด ์ฌ๋ฒ ์ท์ด ์์ ๋๋ ๋ฌด์กฐ๊ฑด ๋ณธ์ธ์ด ๊ฐ์ ธ์ผ ํจ(๋จ์๊ฒ ๋น๋ ค์ค ์ ์์)
// lost๊ฐ [1, 2]์ผ ๋ reserve๊ฐ [2, 3]์ด๋ฉด 2๋ฒ์ด 1๋ฒ์๊ฒ ๋จผ์ ์ท์ ๋น๋ ค์ฃผ๊ฒ ๋๋ฏ๋ก ๋ ๋ฆฌ์คํธ ๊ฐ ์ค๋ณต ์ ๊ฑฐ
List<Integer> targetLostList = new ArrayList<>(lostList);
List<Integer> targetReserveList = new ArrayList<>(reserveList);
targetLostList.removeAll(reserveList);
targetReserveList.removeAll(lostList);
// ์ ์ฒด ์ธ์ ์์์ ๋๋ ๋นํ ์ ์ ์ธ, ๋๋ ๋นํ ์ฌ๋์ด ์ฌ๋ฒ ์ท์ด ์๋ ๊ฒฝ์ฐ ์ ์ธ
int answer = n - lost.length + (lostList.size() - targetLostList.size());
// ๋ชฉ๋ก์ด ์ ๋ ฌ๋์ด ์์ด์ผ ์์ฐจ์ ์ผ๋ก ๋น๊ต ๊ฐ๋ฅ
Collections.sort(targetLostList);
Collections.sort(targetReserveList);
// ์ฌ๋ฒ ์ท ์๋ ์ฌ๋ ์ค ๋น๋ ค์ค ์ ์๋ ์ฌ๋ ์ฐพ๊ธฐ
for (int i = 0; i < targetReserveList.size(); i++) {
int prev = targetReserveList.get(i) - 1; // ์ด์ ๋ฒํธ
int next = targetReserveList.get(i) + 1; // ์ดํ ๋ฒํธ
for (int j = 0; j < targetLostList.size(); j++) {
int temp = targetLostList.get(j);
if (temp == prev || temp == next) {
targetLostList.remove(j); // ์ด๋ฏธ ๋น๋ ค์ค ๊ฒฝ์ฐ ๋ชฉ๋ก์์ ์ ์ธ
answer++;
break;
}
}
}
return answer;
}
}
'๊ฐ๋ฐ > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ์๊ณ ์ฌ (Java) (0) | 2022.02.15 |
---|---|
K๋ฒ์งธ์ (Java) (0) | 2022.02.09 |
์ฃผ์ ๊ฐ๊ฒฉ (Java) (0) | 2022.02.06 |
๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (Java) (0) | 2022.01.24 |
ํ๋ฆฐํฐ (Java) (0) | 2022.01.16 |
๋๊ธ