[백준] 16466 - 콘서트 (python 파이썬)

강민수·2023년 1월 11일

Algorithm-BACKJOON

목록 보기
23/55
post-thumbnail

백준 16466 문제 바로가기

풀이 코드

n = int(input())  # 1차에서 팔린 티켓들의 수
nums = sorted(list(map(int, input().split())))
isSame = True
for i in range(n):
    if (i + 1) != nums[i]:
        print(i + 1)
        isSame = False
        break
if isSame:  # 숫자가 같을 경우 ex) 번호가 5개인데 1 2 3 4 5일때 for문에서도 1 2 3 4 5 순으로 같기 때문에
    print(n + 1)

정렬을 사용해 풀 수 있는 문제다.
티켓 번호 5개를 4, 1, 2, 7, 8 이렇게 받았다면 1, 2, 4, 7, 8으로 정렬하고 for문으로 5개를 검사하는데 인덱스는 0부터 시작이므로 +1을 해주어서 1부터 5까지 값이 같은지 확인을 한다
예를 들어, 위의 예시라면 1, 2 까지는 인덱스와 값이 같지만 3과 4는 다르기 때문에 반복문 안에서 if 조건에 걸리면 인덱스 값을 출력해주고 break로 빠져나온다 !
반대로, 1 2 3 4 5 이렇게 5개를 받을 경우 for문 안에서는 인덱스 번호와 전부 같은 숫자이기 때문에 걸리지 않아서 for문의 if구문에서 전부 일치한지 여부에 대한 isSame 변수를 만들어 준 후, if에서 걸리면 false로 바꿔주었다.
이렇게 isSame이 True라면(for문에서 if에 걸리지 않는다면) n+1값을 출력하도록 했다.

profile
능동적으로 개발 지식을 찾아다니는 백엔드 개발자입니다 😊 작성된 글에 대한 질문들 및 피드백은 언제나 환영입니다 :) 👌

0개의 댓글