반응형
리스트, 딕셔너리로 들어오면 개념이 좀 까다롭다.
아이디어 자체는 간단하지만, 막상 코드로 표현하는 게 쉽지 않은 파트다.
딕셔너리를 잘 활용할 수 있는 백준 문제 중에 7785번 문제에 대한 풀이이다.
https://www.acmicpc.net/problem/7785
반응형
import sys
record={}
n = int(sys.stdin.readline())
for _ in range(n):
person, enterOrLeave = map(str, sys.stdin.readline().split())
record[person] = enterOrLeave
present = []
for person, enterOrLeave in record.items():
if record[person] == 'enter':
present.append(person)
present = sorted(present, reverse=True)
for _ in present:
print(_)
1. record라는 딕셔너리를 만든다.
2. person, enterOrLeave = map(str, sys.stdin.ealine().split())에서, 문자열 공백 기준으로 두 개 받고 split으로 찢어서 두 변수에 저장! map(int, ~)가 익숙하니, str 쓰는 것도 잊지 말기
3. 딕셔너리이름[키] = 값으로 키/값 추가 가능
728x90
** 이 문제는 출입자 명부를 기준으로, 현재 남아 있는 직원의 이름을 구하는 문제이다. 딕셔너리를 활용하면, 한 인물의 출입 문제를 한 번에 다룰 수 있다. 가령, 철수라는 인물이 들어왔다가 나온다면, 현재 상태는 leave 상태이다. enter 이후에 leave가 덧씌워져 철수 : leave 상태가 되는 점을 이용한다.
SMALL
4. 딕셔너리상에서 enter 상태인 사람들을 다루지 않고 리스트를 하나 만들어 enter 상태인 사람을 append() 함수를 이용하여 리스트에 추가한다. 여기서 딕셔너리는 append()를 지원하지 않으므로 주의한다. 리스트 = sorted(리스트, reverse=True)로 알파벳 역순으로 정렬한다. present 리스트에 있는 명단을 하나씩 줄바꿈을 이용하여 출력한다.
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
[백준/파이썬] 1920 수 찾기 : 이진검색트리 말고 세트(집합)으로 풀기, 시간초과 나는 이유 (0) | 2024.03.31 |
---|---|
[백준/파이썬] 1308번 D-Day (1) | 2024.03.31 |
[백준/파이썬] 1085번 직사각형에서 탈출 (0) | 2024.03.22 |
백준 티어 보는 법, 티어 순서, 문제별 티어 보는 법 (0) | 2024.03.21 |
[파이썬(Python)] 백준 문제 풀이 1065 한수 (1) | 2024.02.12 |