티스토리 뷰
배열 A에 1 ~ N까지 수가 들어있고 그 중에 없는 수를 return하는 문제.
무조건 1부터 순차적으로 시작해야되고, 없는 경우 마지막값의 +1한 값을 return해야 한다.
class Solution {
public int solution(int[] A) {
// 빈 배열 처리
if (A.length == 0) {
return A.length + 1;
}
List<Integer> list = new ArrayList<>();
for (int a : A) {
list.add(a);
}
// 리스트에 담아서 소팅
Collections.sort(list);
int first = list.get(0);
if (first != 1) {
return 1;
}
for (int i = 0; i < list.size(); i++) {
if (first != list.get(i)) {
return first;
}
first++;
}
return list.size() + 1;
}
}
처음엔 여러가지 예외처리를 해야한다고 생각해서 위처럼 짰는데, 굳이 빈 배열 처리도 해 줄 필요 없고, List로 만들어서 넣을 필요도 없어서 아래와 같이 다시 리팩토링했다.
class Solution {
public int solution(int[] A) {
Arrays.sort(A);
for (int i = 0; i < A.length; i++) {
if (i + 1 != A[i]) {
return i + 1;
}
}
return A.length + 1;
}
}
i + 1과 i 위치의 배열 값이 서로 다르면 i + 1을 그대로 반환하고, 빈 배열 또는 모두 있는 케이스인 경우는 그냥 현재 length + 1을 반환하도록 구현하였다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스 Level 3
- Synchronous
- 코딩테스트 고득점 Kit
- Asynchronous
- 프로그래머스 Level 2
- 프로그래머스
- non-blocking
- 비동기
- 블로킹
- http://www.nextree.co.kr/p6960/
- Handler Interceptor
- blocking
- 필터
- 스택/큐
- 프로그래머스 Level 1
- 해시
- 논블로킹
- Filter
- 인터셉터
- 동기
- 핸들러 인터셉터
- a
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함