
🔎 문제
농부 존은 소들의 지적인 자극을 주기 위해 축사 벽에 대형 미국 지도를 붙여 놓았습니다. 소들은 헛간에서 이 지도를 바라보며 많은 시간을 보내면서 몇 가지 흥미로운 패턴을 발견하기 시작했습니다. 예를 들어, 미시간주 플린트와 플로리다주 마이애미는 매우 특별한 관계를 가지고 있는데, '플린트'의 첫 두 글자는 마이애미의 주 코드(“FL”)를, '마이애미'의 첫 두 글자는 플린트의 주 코드(“MI”)를 나타냅니다.
두 도시가 이 속성을 만족하고 서로 다른 주에서 왔다면 '특별한 쌍'이라고 가정해 보겠습니다. 소들은 얼마나 많은 특별한 도시 쌍이 존재하는지 궁금해하고 있습니다. 소들이 이 재미있는 지리적 퍼즐을 풀 수 있도록 도와주세요!
입력
입력의 첫 줄에는 지도에 있는 도시의 수인 N(1≤N≤200,000)이 들어 있습니다.
다음 N 줄에는 각각 두 개의 문자열, 즉 도시 이름(최소 2개에서 최대 10개의 대문자로 이루어진 문자열)과 두 글자로 이루어진 주 코드(대문자 2개로 이루어진 문자열)가 포함됩니다. 주 코드는 실제 미국 주가 아닌 ZQ와 같은 것일 수 있다는 점에 유의하세요. 같은 이름을 가진 여러 도시가 존재할 수 있지만 서로 다른 주에 속해 있습니다.
출력
특수한 도시 쌍의 수를 출력합니다.
예제 입력 1 복사
6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL
예제 출력 1 복사
1
💡풀이과정
플로리다 마이애미 : FL MI
미시건 플린트 : MI FL
⇒ 도시의 앞 2글자와 주 코드가 서로 교차 매칭되는 2개의 도시를 Special Pair라 한다.
import sys
input = sys.stdin.readline
cnt = 0
dic = dict()
for _ in range(int(input())):
city, state = input().split()
a = city[:2]
if a == state:
continue
dic[state+a] = dic.get(state+a, 0)+1
cnt += dic.get(a+state, 0)
print(cnt)
🤩 상호관계 확인하는 코드 자세히 보기
pair = a + state
reverse_pair = state + a
# 상호 관계 확인
cnt += dic.get(reverse_pair, 0)
dic[pair] = dic.get(pair, 0) + 1
'Python > 코딩 테스트' 카테고리의 다른 글
| [백준] 1931번: 회의실 배정 (0) | 2024.11.19 |
|---|---|
| [백준] 13220번 Secret (6) | 2024.11.12 |
| [백준] 23905번 Countdown (3) | 2024.11.11 |
| [동적계획법] N으로 표현 (0) | 2024.11.08 |
| [백준] 15829번: Hashing (1) | 2024.11.07 |
댓글