[Programmers] 순열 검사
문제
길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.
1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.
입출력
arr result
[4, 1, 3, 2] true
[4, 1, 3] false
Solution 1
def solution(arr):
answer = True
lst = list(range(1,len(arr)+1))
arr.sort()
if arr!=lst:
answer = False
return answer
- 직접 푼 풀이이다.
- 비교할 lst를 만들어 1부터 n까지로 초기화한다. (n은 arr의 길이)
- arr를 오름차순 정렬해 lst와 같으면 true, 다르면 false를 반환한다.
Solution 2
def solution(arr):
arr.sort()
for i in range(len(arr)):
if arr[i] != i+1:
return False
return True
- 1번 풀이와 비슷한 개념이지만 다른 방식으로 구현한 코드이다.
끄적
- return 시에 True/False가 아닌 true/false로 하면 런타임 에러가 난다..
💛 개인 공부 기록용 블로그입니다. 👻