문제풀이/BOJ

[Python] BOJ/백준 1453번 피시방 알바

서채리 2021. 6. 21. 22:40

[문제]

https://www.acmicpc.net/problem/1453

 

1453번: 피시방 알바

첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다.

www.acmicpc.net

 


[풀이]

두 가지 풀이가 있다.

 

1) 리스트 선언 후 검사

피시방 자리 100개를 다 0으로 초기화한 후 입력받은 자리를 인덱스로 이용해 해당 인덱스의 값이 0이면 1을 더하고 0이 아니면 이미 다른 손님이 앉아있기 때문에 refused_cnt를 1 증가시킨다.

 

2) set 자료형 이용

만약 세 명의 손님의 희망 좌석이 1, 2, 2일 경우 이를 set()으로 감싸면 중복되는 값은 없어지기 때문에 1, 2가 된다. 이를 처음 입력받은 총 손님 수 n에서 빼면 거절당한 손님 수를 구할 수 있다.

 


[코드]

- 리스트로 100개의 피시방 자리를 선언하고 검사하는 경우

if __name__ == '__main__':
    n = int(input())
    customer = list(map(int, input().split()))
    PC_seat = [0] * 101
    refused_cnt = 0

    for i in customer:
        if PC_seat[i] != 0:
            refused_cnt += 1
        else:
            PC_seat[i] += 1

    print(refused_cnt)

 

- 입력받은 희망 좌석을 set으로 감싼 후 n에서 뺄 경우

if __name__ == '__main__':
    n = int(input())
    seats = list(map(int, input().split()))
    s = len(list(set(seats)))
    print(n - s)