삼성시의 버스 노선
풀이
문제 입력이 아주 조금 복잡하긴 한데 자세히 읽으면 금방 무슨 말을 하고자 하는지 이해가 된다.
A1, B1 이렇게 적혀있는 것들은 한 버스 노선이 어디 정류장부터 어디 정류장까지 가는지에 대한 정보를 주는 것이다.
그리고 C들은 정류장 번호이다.
나는 머릿속의 복잡함을 최소화하고자, 일단 각 리스트를 만들고 이를 리스트에 넣은 뒤에 정리하는 방식으로 했지만, 그렇게 하지 않더라도 풀 수 있는 방법이 충분히 있을 거라고 생각된다.
우선 나는 시작 정류장, 도착 정류장, 확인 정류장을 각 리스트를 생성하고, 이후 이를 이용하는 방식을 사용했다.
또한 5000개의 정류장이므로, 1~5000번을 이용하기 위해, bus_stop = [0] * 5001로서 변수를 생성하였다.
위처럼 변수 초기 설정을 다해주고 난 후에 각 버스가 몇 번 정류장을 지나는지 다 확인하게 만드는 방식을 사용했다.
더 좋고 빠른 방식도 분명히 생각나지만, 여기선 내가 빠르게 문제를 푸는 방식을 택했고, 통과했다.
T = int(input())
for testcase in range(1,T+1):
N = int(input())
A_list = []
B_list = []
for _ in range(N):
A, B = map(int, input().split())
A_list.append(A)
B_list.append(B)
P = int(input())
C_list = []
for _ in range(P):
C = int(input())
C_list.append(C)
# 버스정류장 0번~ P번 # 사용은 1번~P번
bus_stop = [0]*(5000+1)
for i in range(N):
# 출발지부터 도착지까지
for j in range(A_list[i], B_list[i]+1):
bus_stop[j] += 1
# C는 버스 정류장번호, 각 정류장에 몇개의 버스 노선이 다니냐?
# 버스는 A0~ B0, A1~B1, ... 으로 다님
print(f'#{testcase}', end=' ')
for stop in C_list:
print(bus_stop[stop], end=' ')
print()
'알고리즘 > SWEA' 카테고리의 다른 글
SWEA D3 13218. 조별과제 (python) (0) | 2024.02.28 |
---|---|
SWEA D3 15612. 체스판 위의 룩 배치 (python) (1) | 2024.02.27 |
SWEA D3 13428. 숫자 조작 (python) (1) | 2024.02.27 |
SWEA D3 14692. 통나무 자르기 (python) (1) | 2024.02.27 |
SWEA D3 16002. 합성수 방정식 (python) (0) | 2024.02.26 |