codility - PermCheck

이슬비·2025년 6월 4일
0

Coding Test

목록 보기
13/16

문제

  • 길이 N의 Array가 주어졌을 때 [1...N]의 값이 모두 1번씩 존재 = permutation (1 반환)
  • 아닐 경우 (0 반환)

내 코드

def solution(A):
    # Implement your solution here
    if sum(range(1, len(A)+1)) == sum(A):
        return 1
    else:
        return 0
  • 예외 처리 (중복, 범위 불만족) 에 대한 코드가 전혀 없음

지피티 코드

def solution(A):
    N = len(A)
    seen = [False] * (N + 1)          # 인덱스 1~N 사용

    for x in A:
        # 1) 범위를 벗어나면 바로 실패
        if x < 1 or x > N:
            return 0
        # 2) 이미 본 숫자면 중복 → 실패
        if seen[x]:
            return 0
        seen[x] = True

    # 3) 위 두 검사를 통과했으면 모든 수가 1~N에서 한 번씩 등장한 것
    return 1
  • 1) 을 통해 범위 검사
  • 2) 를 통해 중복 검사
  • 구현 능력 자체도 중요하지만 예외를 좀 더 고민해보자 ...
profile
정말 알아?

0개의 댓글