728x90
반응형
programmers.co.kr/learn/courses/18
문제설명
길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.
1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.
제한사항
배열의 길이는 10만 이하입니다.
배열의 원소는 0 이상 10만 이하인 정수입니다.
입출력 예
arr | result |
[4,1,3,2] | true |
[4,1,3] | false |
입출력 예 설명
입출력 예 #1
입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다.
입출력 예 #2
[4, 1, 3]이 주어진 경우, 배열의 길이가 3이므로 배열에는 1부터 3까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3]에는 2가 없고 4가 있으므로 false를 반환하면 됩니다.
나의 답안
import java.util.Arrays;
class Solution {
public boolean solution(int[] arr) {
boolean answer = true;
Arrays.sort(arr);
int len = arr.length;
for (int i = 0; i < len; i++) {
if (arr[i] != i+1) {
answer = false;
break;
}
}
return answer;
}
}
해설 답안
// 방법 1
public static boolean solution(int[] arr) {
int[] chk = new int[100001];
int n = arr.length;
for(int i=0;i<n;i++){
if(arr[i] < 1 || arr[i] > n){
return false;
}
chk[arr[i]]++;
}
for(int i =1;i<=n;i++){
if(chk[i] != 1){
return false;
}
}
return true;
}
// 방법 2
public static boolean solution(int[] arr) {
Array.sort(arr);
for(int i=0;i<arr.lengh;i++){
if(arr[i] != i+1) {return false;}
}
return true;
}
728x90
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 알고리즘 문제 해설 - 가장 큰 정사각형 찾기 (0) | 2020.11.14 |
---|---|
[프로그래머스] 알고리즘 문제 해설 - 순열 검사 (0) | 2020.11.13 |
[프로그래머스] 알고리즘 문제 해설 - 자리수 더하기 (0) | 2020.11.13 |
[Level 1] 체육복_탐욕법(Greedy) (0) | 2020.10.19 |
[Level 1] 크레인 인형뽑기 게임 (0) | 2020.09.23 |