반응형
문제
This is a demo task.
Write a function:
class Solution { public int solution(int[] A); }
that, given an array A of N integers, returns the smallest positive integer (greater than 0)
that does not occur in A.
For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5.
Given A = [1, 2, 3], the function should return 4.
Given A = [−1, −3], the function should return 1.
Write an efficient algorithm for the following assumptions:
N is an integer within the range [1..100,000];
each element of array A is an integer within the range [−1,000,000..1,000,000].
주어진 정수형 배열 A에서 양의 정수 중 누락된 최소값을 찾는 문제이다.
풀이
import java.util.Arrays;
class Solution {
public int solution(int[] A) {
int [] chkArr = new int[1000001];
int maxCnt=0;
int cnt=0;
for(int i=0; i<A.length; i++){
if(A[i] > 0){
chkArr[A[i]]++;
cnt++;
}
}
if(A.length == 1){
if(chkArr[1] == 1) return 2;
else return 1;
}
for(int j=1; j<=cnt; j++){
if(chkArr[j] == 0){
return j;
}
maxCnt = j;
}
return maxCnt+1;
}
}
임의의 정수형 배열을 만들어 주어진 배열 A에서 양수값에 해당하는 인덱스에 카운팅하여 최소값을 찾습니다.
테스트한 샘플은 아래에 있습니다.
int [] A = {1,2,3}; //배열 내에 누락된 값이 없을 경우 최대값 +1
int [] B = {1}; //배열 내에 누락된 값이 없을 경우 최대값 +1 AND 배열크기가 1
int [] C = {2}; //배열 내에 누락된 값이 있을 경우 최대값 +1 AND 배열크기가 1
int [] D = {-1}; //음수값 처리 AND 배열크기가 1
int [] E = {1,1,2,3}; //중복된 값처리 처리
각 결과값은 다음과 같습니다.
A : 4
B : 2
C : 1
D : 1
E : 4
결과
주소 : app.codility.com/demo/results/trainingVAJNJA-JT3/
문제 난이도가 미디엄으로 조금 어려워졌습니다.
문제 자체가 어렵다기보단 예외사항을 조금 생각해 보고 작성하면 큰 어려움 없이 풀 수 있을 문제라고 생각됩니다.
반응형
'DEV > 문제풀이' 카테고리의 다른 글
Lesson 6(Sorting) - Triangle (0) | 2021.01.12 |
---|---|
Lesson 4(Counting Elements) - MaxCounters (0) | 2021.01.11 |
Lesson 4(Counting Elements) - FrogRiverOne (0) | 2021.01.08 |
Lesson 3(Time Complexity) - TapeEquilibrium (0) | 2021.01.07 |
Lesson 3(Time Complexity) - PermMissingElem (방법2) (0) | 2021.01.05 |