728x90
반응형
문제 설명
길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.
1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.
제한사항
- 배열의 길이는 10만 이하입니다.
- 배열의 원소는 0 이상 10만 이하인 정수입니다.
입출력 예
arrresult
[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를 반환하면 됩니다.
숫자가 중복없이 이어져 있는지 여부를 확인하는 문제이다.
우선 제한사항 내용 중 배열의 길이가 10만 이하이므로 배열의 길이가 1일수도 있다.
배열의 길이가 1인 경우에는 무조건 중복없이 이어져 있음으로 IF문을 통해서 return True를 하도록 한다.
그 후 배열을 오름차순으로 정렬한 뒤, n-1번째 숫자에서 1을 더한 숫자가 n번째 숫자와 다른지 체크를 하고
만약 다르다면 이어져 있지 않거나 중복이므로 return False 를 한다.
for문을 return 없이 완료 되었다면 숫자가 중복없이 이어져 있음으로 return True 를 하도록 한다.
def solution(arr):
if len(arr) <= 1:
return True
arr = sorted(arr)
for i in range(1, len(arr)):
if arr[i - 1] + 1 != arr[i]:
return False
return True
728x90
반응형
'IT > 알고리즘' 카테고리의 다른 글
[Python] 백준 7576 - 토마토 (0) | 2021.11.06 |
---|---|
[Python] 백준 1012 - 유기농 배추 (0) | 2021.11.06 |
[Python] 백준 2667 - 단지번호붙이기 (0) | 2021.11.06 |
프로그래머스 - 가장 큰 정사각형 찾기 (0) | 2021.01.23 |
프로그래머스 - 나머지 한 점 (0) | 2021.01.22 |