P개의 버스 정류장에 대해 각 정류장에 몇 개의 버스 노선이 다니는지 구하는 문제.
T = int(input()) # 테스트케이스의 개수 T
for test_case in range(1, T+1):
N = int(input()) # 버스 노선의 길이 N
bus = [0 for i in range(5001)] # 버스 노선
for i in range(N):
a, b = map(int, input().split()) # 시작 번호, 끝 번호
for j in range(a, b+1):
bus[j] += 1 # 노선 ++
P = int(input()) # 정류소 길이
answer = ''
for i in range(P):
answer += str(bus[int(input())])+ ' ' # 요구하는 버스 정류장의 노선 개수 ++
print("#%d %s" %(test_case, answer))
[문제풀이]
우선 이 문제, 문제 설명이 진짜 요상하다...
삼성시에는 버스 정류장이 총 5,000여개가 있고, 각기 번호가 붙어있다.
1 3 (A1, B1)->(시작번호, 끝 번호)
2 5 (A2, B2)->(시작번호, 끝 번호)
테스트케이스 개수와, 버스 노선의 수를 입력받은 다음 Ai, Bi를 입력받는데, 이건 시작번호, 끝 번호다.
즉, (1, 3)이란 건 1부터 3까지 버스 정류장을 지나는 노선이 1개 있다는 것이다.
그래서 1, 2, 3번 정류장에 노선이 1개 존재한단 의미!
for j in range(a, b+1):
bus[j] += 1 # 노선 ++
그래서 이렇게 지정된 구간의 번호의 버스 정류장에 노선의 개수를 더해줬다.
5 (P개의 버스 정류장)
1 (정류장 번호)
2 (정류장 번호)
3 (정류장 번호)
4 (정류장 번호)
5 (정류장 번호)
그 다음 입력받는 건 P개의 버스 정류장이다.
이 지정한 번호의 버스 정류장의 노선 개수를 공백 문자를 기준으로 모두 한 줄로 출력해야 한다.
여기선 1, 2, 3, 4, 5로 되있는데, 숫자도 제멋대로며 없는 노선이 없는 버스 정류장 번호가 지정될 수도 있다.
for i in range(P):
answer += str(bus[int(input())])+ ' ' # 요구하는 버스 정류장의 노선 개수 ++
그래서 입력받은 그대로 str로 바꿔서 출력할 버스 정류장의 노선의 개수를 문자열에 더해줘, 이를 출력해줬다.
문제 자체는 쉬운데 설명이 너무 개떡같이... 되어 있어 풀기가 어려운 문제였다....
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 5356. 의석이의 세로로 말해요 (0) | 2024.11.11 |
|---|---|
| [Python, 파이썬] SWEA 1961. 숫자 배열 회전 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 1238. [S/W 문제해결 기본] 10일차 - Contact (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 3499. 퍼펙트 셔플 (1) | 2024.11.11 |
| [Python, 파이썬] SWEA 3307. 최장 증가 부분 수열 (1) | 2024.11.11 |