2021-02-21-TIL
양의 정수 중 빠진 가장 작은 수 찾기
풀이 코드와 채점 메모로 보아 Codility의 MissingInteger 문제다. 정수 N개로 된 배열 A가 주어질 때 A에 없는 가장 작은 양의 정수를 돌려줘야 한다. 예를 들어 [1, 3, 6, 4, 1, 2]이면 5, [1, 2, 3]이면 4, [-1, -3]이면 1이다. N은 1 이상 100,000 이하이고, 각 원소는 -1,000,000 이상 1,000,000 이하다.
채점 결과에서 메모해 둔 실패 사례는 다음과 같다.
For example, for the input [-1000000, 1000000] the solution terminated unexpectedly.
chaotic sequences length=10005 (with minus)
WRONG ANSWER, got 0 expected 100001
chaotic + many -1, 1, 2, 3 (with minus)
첫 번째는 음수 최솟값과 양수 최댓값이 함께 들어간 입력에서 실행이 비정상 종료된 경우다. WRONG ANSWER는 답이 100,001이어야 하는 입력, 즉 1부터 100,000까지가 모두 들어 있는 입력에서 0을 돌려준 경우다. N이 최대 100,000이므로 답은 최대 100,001이다. 아래 풀이는 양수만 체크 배열에 표시한 뒤 1부터 차례로 비어 있는 칸을 찾고, 끝까지 다 차 있으면 반복문이 끝난 시점의 i를 돌려준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int solution(int[] A) {
int[] check = new int[1000001];
for (int a : A) {
if (a > 0) check[a] = 1;
}
int i = 1;
for (i = 1; i < 1000001; i++) {
if (check[i] == 0) return i;
}
return i;
}
}
컬렉션과 배열 변환
LinkedHashSet을 역순으로 순회하는 방법과, 문자열 배열을 정수 배열로 바꾸는 방법을 찾아봤다.
코드 리뷰 방식 논의
집단 지성으로 코딩테스트 보는 시험
화수목금
- 이틀 연속 리뷰하지 않는다
- 그룹 한 명씩
- 나누지 않고
- 낮은거 기준으로
리뷰를 받고 싶다
- 시간이 남을 경우 신청
- 용기를 내주세요!
크게 개의치 않아도 될 것 같다
- 보충의견1 : 두 가지 모두 의미가 있다.
- 보충의견2 : 다른 사람 리뷰를 듣는게 좋은 사람도 있다.
- 보충의견3 : 꼼꼼히 볼 수 있다.
- 프레디, 어거스트, 로치
난 둘다
- 완, 로빈
모두가 다 한 번씩 하는게 좋을 것 같다.
- 보충의견1 : 자신이 없는 사람은 소극적이게 될 수 있다.
- 보충의견2 : 편안한 분위기에서 하니까 퀄리티가 떨어진 경험이 있다.
- 보충의견3 : 잘 하는 사람은 모두 진도가 빠르다
댓글
아직 댓글이 없습니다