For Programmer

백준 6485번 파이썬 문제풀이(삼성시의 버스 노선) 본문

코팅테스트/백준 문제 모음

백준 6485번 파이썬 문제풀이(삼성시의 버스 노선)

유지광이 2022. 2. 14. 19:26
728x90

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

 

SW Expert Academy

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

swexpertacademy.com

 


이 문제는 처음에 약간 고민했다. P를 입력받고 버스 정류장의 정보를 P만큼 입력받는데 중복된다는 말이 없어서 고민했으나 역시나 틀리자말자 중복을 허용하니 맞았다. 처음에는 딕셔너리로 풀 생각을 못했는데 중복을 허용해야하기 때문에 딕셔너리로 풀었더니 쉽게 풀렸다. 딕셔너리 키에는 해당 정류소의 정보를 Value에는 지나가는 횟수를 저장하는 식으로 하였다.

 

import sys

# sys.stdin = open('input.txt', 'r')

T = int(input())

for order in range(1, T + 1):
    N = int(input())  # 노선의 수
    nosun = []  # 노선의 정보를 담을 리스트

    for i in range(N):
        nosun.append(list(map(int, input().split())))  # 노선의 정보 입력

    P = int(input())  # 정류장의 개수
    C = []  # 정류장의 번호
    info = {}  # 딕셔너리에 정류장번호 : 지나가는 횟수 형식으로 저장
    for i in range(P):
        station = int(input())
        C.append(station)
        info[station] = 0

    for i in nosun:  # 노선의 정보를 돈다.
        for j in range(i[0], i[1] + 1):  # 노선의 첫번째부터 끝 정류장까지 돈다.
            if j in info:  # 만약 입력받은 정류장이 존재하만다면
                info[j] += 1  # 지난가는 횟수를 1회 증가

    print(f'#{order}', end=" ")
    for i in C:  # 입력받은 정류장을 순회하며 저장된 횟수 출력
        print(info[i], end=" ")
    print()
728x90
Comments