반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 22113번 창영이와 버스 파이썬(Python)

1) 문제번호 : 22113번

 

2) 문제 출처

https://www.acmicpc.net/problem/22113

 

22113번: 창영이와 버스

첫째 줄에 도시에 존재하는 버스의 개수 N, 창영이가 이용하는 버스의 개수 M이 주어진다. 둘째 줄에 창영이가 이용하는 M개 버스의 번호가 순서대로 주어진다. 버스 번호는 중복되지 않는다. 셋

www.acmicpc.net

 

2. 문제

창영이는 매일 버스를 이용해 출퇴근을 한다.

창영이가 사는 도시에는 N개의 버스가 있고, S번 버스에서 E번 버스로 환승하기 위해서는 AS,E원이 필요하다.

창영이가 출근하기 위해 이용하는 M개의 버스가 환승하는 순서대로 주어지고, 모든 버스끼리의 환승 요금이 주어진다.

창영이가 한 번 출근하는데 지불해야하는 환승 요금의 합을 구해보자. 최초에 탑승할 때 지불하는 버스 요금은 제외한다.

 

3. 제약사항

 

4. 입력

첫째 줄에 도시에 존재하는 버스의 개수 N, 창영이가 이용하는 버스의 개수 M이 주어진다.

둘째 줄에 창영이가 이용하는 M개 버스의 번호가 순서대로 주어진다. 버스 번호는 중복되지 않는다.

셋째 줄부터 N개의 줄에 걸쳐 버스의 환승 요금에 대한 정보가 주어진다. S번째 줄의 E번째 수는 AS,E를 의미한다. AS,E는 AE,S와 다를 수 있다.

 

5. 출력

주어진 M개의 버스를 순서대로 환승하며 탑승했을 때 필요한 환승 요금의 총합을 출력한다.

 

6. 풀이

- 창영이가 이용하는 버스의 수만큼 반복을 하는데, 창영이가 이용하는 버스 번호를 2개씩 board 리스트에서 찾아내어 그 값을 cost(버스 환승 총 요금)에 더해주면 된다.

 

7. 소스 코드

import sys
input = sys.stdin.readline

N, M = map(int, input().split()) # 도시에 존재하는 버스의 수 N, 창영이가 이용하는 버스의 수 M

bus_number = list(map(int, input().split())) # 창영이가 이용하는 M개의 버스 번호

board = [] # 버스 환승 요금 행렬

# 버스 환승 요금 행렬 입력
for _ in range(N) :
    board.append(list(map(int, input().split())))

cost = 0 # 버스 환승 총 요금
for i in range(M-1) :
    cost += board[bus_number[i]-1][bus_number[i+1]-1]

print(cost)

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기