알고리즘/알고리즘_swea

[Python][SWEA] 6485. 삼성시의 버스 노선 D3

Jerry_K 2024. 5. 13. 22:10
 

SW Expert Academy

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

swexpertacademy.com


🗒️ 파이썬 코드 풀이

T = int(input())
for tc in range(1,T+1) :
    N = int(input())
    lst = [0]*5001
    for _ in range(N) :
        A,B = map(int,input().split())
        for i in range(A,B+1) :
            lst[i] += 1

    ans = []
    P = int(input())
    for _ in range(P) :
        P_num = int(input())
        ans.append(lst[P_num])
    print(f"#{tc}",*ans)

 

1. 이 문제는 간단하게 각 정류장에 몇개의 노선이 지나가는지를 출력하는 문제이다.

 

2. 노선의 범위는 5000개로,  index번호와 노선 번호를 맞춰주기 위해 5001까지 리스트를 만들어줬다.

 

3. 입력받은 A~B 까지의 정류장을 지나가므로, +1 을 각각 해준다.

 

4. 마지막으로 P번 반복하여 입력받은 정류장 번호에 맞는 노선 통과 개수를 출력하면 된다.

 

📌 주의사항

print(f"#{tc} ",end="")
P = int(input())
for _ in range(P) :
    P_num = int(input())
    print(lst[P_num],end=" ")​​


맨 처음 굳이 list를 만들어주지 않고 바로 출력을 해주었는데, 테스트 케이스에서 한개도 성공못하게 fail을 했다.

뭐가 문제인가 봤는데, 마지막 입력에 띄어쓰기가 들어가서 에러가 뜬 것 같다...

이런 경우는 처음인거 같은데.... 숫자열을 출력 할 때는 조심해서 하자 ㅠㅠ 

아니면 그냥 편하게 *list를 쓰던가 !

🧐 문제 코멘트

구현이 어려운게 아니라, 문제 설명이 어려웠다... 

테스트 케이스가 한개뿐이라, 문제를 이해하기에는 다소 부족했던 것 같다.

특히 P 부분인데, 나는 입력 받은 값을 순차적으로 출력하는 줄 알았는데,  입력 받은 값을 기준으로 출력하는 것이다....

예시에서 (1 2 3 4 5) 이렇게가 아닌 (1 5 4 3 2) 이렇게만해도 이해가 쉽게 됐을텐데 ㅠㅠ


📚 문제


삼성시에 있는 5,000개의 버스 정류장은 관리의 편의를 위해 1에서 5,000까지 번호가 붙어 있다.

그리고 버스 노선은 N개가 있는데, i번째 버스 노선은 번호가 Ai이상이고,

Bi이하인 모든 정류장만을 다니는 버스 노선이다.

P개의 버스 정류장에 대해 각 정류장에 몇 개의 버스 노선이 다니는지 구하는 프로그램을 작성하라.


[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 하나의 정수 N ( 1 ≤ N ≤ 500 )이 주어진다.

다음 N개의 줄의 i번째 줄에는 두 정수 Ai, Bi ( 1 ≤ Ai ≤ Bi ≤ 5,000 )가 공백 하나로 구분되어 주어진다.

다음 줄에는 하나의 정수 P ( 1 ≤ P ≤ 500 )가 주어진다.

다음 P개의 줄의 j번째 줄에는 하나의 정수 Cj ( 1 ≤ Cj ≤ 5,000 ) 가 주어진다.


[출력]

각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고 한 칸을 띄운 후,

한 줄에 P개의 정수를 공백 하나로 구분하여 출력한다.

j번째 정수는 Cj번 버스 정류장을 지나는 버스 노선의 개수여야 한다.