파이썬 알고리즘

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

뜻 지, 깨달음 오 2022. 10. 12. 19:25

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWczm7QaACgDFAWn 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

bucket에 담는 개념을 생각하면 쉽게 풀 수 있는 문제였다. 

해당 정류장에 버스가 지나가면 bucket의 인덱스에 +=1을 해주고, 이를 N번 반복하면

bucket의 각 인덱스는 지나가는 버스의 수가 된다.

(문제에서 정류장이 5000개라고 해서 bucket은 5001개의 인덱스를 가지게했다)

T = int(input())

for tc in range(1, 1+T):
    bucket = [0]*5001
    N = int(input())

    for i in range(N):
        start, end = map(int, input().split())
        for j in range(5001):
            if start <= j <= end:
                bucket[j] +=1

이렇게 bucket에 추가해준 다음,

내가 확인할 정류장 개수인 P를 입력받고, 

내가 확인할 정류장인 C도 P만큼 입력받는다.

내가 확인할 정류장C는 결국 bucket의 인덱스가 된다.

    print(f'#{tc}', end = ' ')
    P = int(input())
    for i in range(P):
        C = int(input())
        print(bucket[C], end=' ')
    print()

맨 마지막에 print() 안해주면 다 한줄에 출력돼서 오답나온다...;;

까먹지말자...

 

전체 풀이)

T = int(input())

for tc in range(1, 1+T):
    bucket = [0]*5001
    N = int(input())

    for i in range(N):
        start, end = map(int, input().split())
        for j in range(5001):
            if start <= j <= end:
                bucket[j] +=1

    print(f'#{tc}', end = ' ')
    P = int(input())
    for i in range(P):
        C = int(input())
        print(bucket[C], end=' ')
    print()