211112 - 순열 검사

이상해씨·2021년 11월 12일
0

알고리즘 풀이

목록 보기
4/94

◾ 순열 검사

문제

길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.

1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.


입력

  • 배열의 길이는 10만 이하입니다.
  • 배열의 원소는 0 이상 10만 이하인 정수입니다.

출력

  • 1 부터 n까지의 숫자가 중복없이 한 번씩 들어있는 경우 true 아닌 경우 false

입출력 예

arrresult
[4, 1, 3, 2]true
[4, 1, 3]false

◾ 풀이

1. 해설

  • 길이가 n인 배열에 1~n까지 숫자가 중복없이 들어있는 경우를 찾는다.
    • 따라서 정렬 시 1~n까지 순서에 맞게 수가 들어있는지 확인하면 된다.
    • 인덱스가 0부터 시작하므로 (인덱스 + 1) == 현재값을 확인한다.
    • 다른 값이 있다면 1~n까지의 숫자가 중복없이 들어있지 않은 경우이다.

2. 프로그램

  1. arr을 정렬하여 enumerate()을 통해 반복한다.
    • start 옵션을 통해 시작 번호를 1로 지정할 수 있다.
  2. idxnum을 비교한다.
    • idx != num인 경우 False 반환
# 코드
def solution(arr):
    answer = True

    # arr을 정렬하고 인덱스와 값이 같은지 확인한다.
    # enumerate의 start 옵션으로 시작 인덱스의 값을 지정할 수 있다.
    for idx, num in enumerate(sorted(arr), start = 1):
        if idx != num:
            answer = False
            break

    return answer
profile
후라이드 치킨

0개의 댓글

관련 채용 정보