문제 : https://www.acmicpc.net/problem/22113
22113번: 창영이와 버스
첫째 줄에 도시에 존재하는 버스의 개수 N, 창영이가 이용하는 버스의 개수 M이 주어진다. 둘째 줄에 창영이가 이용하는 M개 버스의 번호가 순서대로 주어진다. 버스 번호는 중복되지 않는다. 셋
www.acmicpc.net
문제 요약 : 환승 요금의 합 출력
| 입력 | 출력 |
| 2 ≤ N(버스) ≤ 100 1 ≤ M(환승 버스 번호) ≤ N 1 ≤ A_S,E(환승 요금) ≤ 1000 |
환승 요금의 합을 출력한다. (최초에 탑승할 때 지불하는 버스요금 제외) |
JAVA
소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_22113.java
| 채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
| 30868093 | cbkpar | 22113 | 맞았습니다!! | 15392KB | 164ms | Java 11 | 831B |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n,m,i,j,s;
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
int[] arr = new int[m];
st = new StringTokenizer(br.readLine());
for(i=0;i<m;i++) arr[i] = Integer.parseInt(st.nextToken());
int[][] map = new int[n+1][n+1];
for(i=1;i<=n;i++) {
st = new StringTokenizer(br.readLine());
for(j=1;j<=n;j++) map[i][j] = Integer.parseInt(st.nextToken());
}
s = 0;
for(i=1;i<m;i++) s += map[arr[i-1]][arr[i]];
System.out.println(s);
}
}
버스에 탑승했던 순서를 배열에 저장한 뒤
각 버스의 환승에 대한 비용을 2차원 배열에 저장하고
각 버스의 환승에 필요한 금액을 불러와 더해준다.
예제 )
4 3
3 1 2
0 2 3 4
5 0 7 8
1 2 0 4
5 6 7 0

'백준온라인' 카테고리의 다른 글
| [백준온라인] 22115번 창영이와 커피 (0) | 2021.07.12 |
|---|---|
| [백준온라인] 22114번 창영이와 점프 (0) | 2021.07.11 |
| [백준온라인] 1269번 대칭 차집합 (0) | 2021.07.09 |
| [백준온라인] 11536번 줄 세우기 (0) | 2021.07.08 |
| [백준온라인] 10163번 색종이 (0) | 2021.07.07 |