본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 6485. 삼성시의 버스 노선

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로 바꿔서 출력할 버스 정류장의 노선의 개수를 문자열에 더해줘, 이를 출력해줬다.

문제 자체는 쉬운데 설명이 너무 개떡같이... 되어 있어 풀기가 어려운 문제였다....