Hyunn

SWEA - 6485. 삼성시의 버스 노선 본문

Coding Test

SWEA - 6485. 삼성시의 버스 노선

Ravié 2024. 1. 6. 19:40
728x90
반응형

문제링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AWczm7QaACgDFAWn&categoryId=AWczm7QaACgDFAWn&categoryType=CODE&problemTitle=&orderBy=SUBMIT_COUNT&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=2

 

SW Expert Academy

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

swexpertacademy.com

 

문제에서 보면 정류장이 5000개라고 해서 "0으로 초기화한 리스트를 5000개 만들어도 되나?" 라는 생각이 들었다. 메모리 오류가 발생할 것 같았지만,,, 결론적으로는 문제없이 통과했다.

 

1. T 변수에 테스트케이스 개수를 입력받는다.
2. bus_stop 변수에 모든 값을 0을 갖는 리스트를 생성한다. 이 리스트에 버스가 지나는 개수를 더해나갈 생각이다.
3. ans 변수는 최종 정답을 출력하는 변수이다.
4. N 변수에 버스의 개수를 입력받는다.
5. 버스의 개수만큼 버스들이 지나가는 첫 정류장 번호를 A1에, 마지막 정류장 번호를 B1에 저장하고 bus_stop리스트에 bus_stop[A1] ~ bus_stop[B1]에 1만큼 증가시킨다.
6. 출력할 정류장 개수인 P를 입력받는다.
7. n 변수에 정류장 번호를 입력받고 해당 정류장에 버스가 몇 개 지나가는지는 bus_stop[n]으로 접근하면 확인 가능하다.
8. 최종적으로 ans를 출력한다.

 

T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    bus_stop = [0 for i in range(5001)] # 정류장
    ans = '#'+str(test_case)+' '
    N = int(input())
    for i in range(N):
        A1, B1 = map(int, input().split())
        for j in range(A1, B1+1):
            bus_stop[j] += 1
    P = int(input())
    for _ in range(P):
        n = int(input())
        ans += str(bus_stop[n]) + ' '
        
    print(ans[:-1])

 

 

느낀 점: 이 크도를 남이 썼다고 생각하고 유지보수 한다면 가독성이 좋은 코드는 절대 아니라고 생각한다. 주석을 더 열심히 달아보자.

728x90
반응형

'Coding Test' 카테고리의 다른 글

백준 - 1874번 스택 수열  (0) 2024.01.17
SWEA - 18662. 등차수열 만들기  (1) 2024.01.06
SWEA - 1206. [S/W 문제해결 기본] 1일차 - View  (2) 2024.01.06