SWEA 6485. 삼성시의 버스 노선 (Python, 구현, D3)

전승재·2023년 11월 9일
0

알고리즘

목록 보기
67/88

SWEA 6485 삼성시의 버스 노선 문제 바로가기

문제 접근

문제를 보고 버스정류장, 버스 노선을 각각 구현하고 반복문을 통해서 각 버스 노선에 일치하는 정류장마다 1을 추가해주는 방식으로 구현하고자 했다. 3중 for문을 사용해도 시간초과가 되지 않는 것으로 봐서 굉장히 널널하게 시간이 주어졌음을 알 수 있다.
하지만 예제가 하나만 주어졌기 때문에 문제를 잘 읽어봐야한다. 버스 정류장의 번호는 1부터 시작하지 않을 수도 있고 정렬되어 주어지지 않을 수도 있기 때문에 이 부분에 유의하여 문제를 풀어야 한다.

문제 풀이

버스 노선

    N = int(input())
    A, B = [], []    
    line = []
    for i in range(N): # 버스 노선
        a, b = map(int, input().split())
        A.append(a)
        B.append(b)
        

버스 정류장

    P = int(input())

    for i in range(P):
        p = int(input())
        line.append([p,0]) # 정류장

1씩 더해주는 로직

   for i in range(N):
        for j in range(A[i],B[i]+1):
            for k, val in enumerate(line):
                if val[0]==j:
                    val[1]+=1

제출 코드

T = int(input())
for test_case in range(1, T + 1):
    N = int(input())
    A, B = [], []    
    line = []
    for i in range(N): # 버스 노선
        a, b = map(int, input().split())
        A.append(a)
        B.append(b)
        
    P = int(input())

    for i in range(P):
        p = int(input())
        line.append([p,0]) # 정류장

    for i in range(N):
        for j in range(A[i],B[i]+1):
            for k, val in enumerate(line):
                if val[0]==j:
                    val[1]+=1

    print(f'#{test_case}',end=" ")
    for i,val in enumerate(line):
        print(val[1], end=" ")
    print()

0개의 댓글