최대 1 분 소요

문제

길이가 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로 하면 런타임 에러가 난다..


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기