본문 바로가기
🥇Problem Solving (psS2mj)/SWEA

[SWEA] 9940. 순열1 (Python3)

by psS2mj 2020. 10. 21.
반응형

문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXHx23oq0REDFAXR&categoryId=AXHx23oq0REDFAXR&categoryType=CODE


나의 논리

 

N이 입력되었을 때, 순열이 맞다면 1부터 N까지의 숫자가 한 번씩 다 있어야 한다는 점에 착안해서 테스트 케이스로 입력 받은 숫자들을 sorting 해주고 1부터 N까지의 숫자가 차례대로 있다면 "YES" 아니라면 "NO"를 출력하도록 했다.

 

사진으로 보기

# date: 2020/10/21
# author: psS2mj
# brief: SWEA_9940_순열1 (D3)

T = int(input())
for tc in range(1,T+1):
    answer = "Yes"
    N = int(input())
    nums = list(map(int,input().split()))
    nums.sort()
    for i in range(1,N+1):
        if i != nums[i-1]:
            answer = "No"
            break
    print("#{} {}".format(tc,answer))

 

핵심은 테스트 케이스에서 주어지는 수열을 입력받은 후에 sorting 해주는 것.

 

그리고나서 nums 배열(입력받은 수열)의 첫 번째 원소부터 마지막 원소까지의 값을 비교하는데 그 값이 1부터 N까지 차례대로 되어 있지 않으면 -예를 들어, 중복된 숫자가 있거나 중간에 빠진 숫자가 있다거나- answer를 "NO"로 업데이트 한다.

 

이 과정에서 한 번도 걸리지 않았으면 answer는 그대로 "YES"일 것이다.

반응형

댓글