728x90
반응형
문제 요약
교감 선생님은 학생들이 귀걸이를 하고 있으면 압수하고 학생의 숫자를 매겨 리스트를 작성한다.
압수한 귀걸이 뒤쪽에는 학생 번호와 'A' 또는 'B'를 함께 적어둔다.
수업이 종료되면 모두 돌려주는데, 하나를 잃어버려서 돌려주지 못한다.
귀걸이를 돌려받지 못한 학생의 이름을 출력하라.
입력
번호를 가진 시나리오로 구성. 1부터 순서대로 증가하고 각 시나리오는 아래 내용을 포함
- 한 줄에 귀걸이 압수당한 학생 수 n (1 ≤ n ≤ 100) 입력
- 다음 n줄 동안 학생 이름(최대 60자) 입력
- 다음 2n - 1줄에 학생 번호와 'A' 또는 'B'가 공백을 사이에 두고 입력
(번호는 교감 선생님의 학생 이름 리스트와 순서 일치) - 학생 번호는 최대 2번 등장. 두 번째 등장 시 첫 번째와 다른 알파벳이 적힘
(첫 번째 등장은 압수, 두 번째 등장은 돌려받음을 의미)
마지막 줄에 0을 입력받으면 입력 종료
출력
시나리오 번호와 귀걸이를 돌려받지 못한 학생 이름을 공백으로 구분해 한 줄씩 출력
입출력 예시
입력 | 출력 |
3 Betty Boolean Alison Addaway Carrie Carryon 1 B 2 A 3 B 3 A 1 A 2 Helen Clark Margaret Thatcher 1 B 2 B 2 A 0 |
1 Alison Addaway 2 Helen Clark |
코드
정답
n = 1
result = []
while n:
# 데이터 입력
n = int(input())
names = [input() for i in range(n)]
values = []
for i in range(2 * n - 1):
a = int(input().split()[0])
values.append(a)
# 계산
values.sort()
for i in range(0, len(values), 2):
if i == (len(values) - 1) or values[i] != values[i + 1]:
result.append(names[values[i] - 1])
break
# 출력
for i in range(len(result)):
print(i+1, result[i])
학생 번호가 최대 2번만 등장한다고 해서, 뒤에 문자는 신경쓰지 않고 번호의 개수가 홀수인지 짝수인지만 봐도 구할 수 있을 것으로 판단. 입력 시 숫자만 저장한 리스트를 정렬해서 홀수인 숫자가 발견되면 result에 그 숫자에 해당하는 학생 이름을 저장한 뒤 빠져나오도록 했다.
피드백
문제 읽고 이해/해석하는데 시간이 많이 걸렸다.
코드 짤 때 주석으로 어떤 기능(데이터 입력, 계산 등)을 넣을 지 먼저 나눠두고 짜니까 헷갈리지 않았다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[정렬] 백준 2752번 세수정렬 Python 풀이 (0) | 2021.05.15 |
---|---|
[자료구조:스택] 백준 20001번 고무오리 디버깅 Python 풀이 (0) | 2021.05.14 |
[구현] 백준 1225번 이상한 곱셈 Python 풀이 (0) | 2021.05.10 |
[자료구조:스택] 백준 12605번 단어 순서 뒤집기 (0) | 2021.03.03 |
[자료구조:스택] 백준 10773번 제로 (0) | 2021.03.01 |