수리 공작소

[22113번] 창영이와 버스 본문

Algorithm/백준 문제풀이

[22113번] 창영이와 버스

suleee 2023. 1. 4. 16:26

문제 요약 :

전체 버스 N개가 있고, 그 중 창영이가 이용할 버스가 M개 입력으로 주어진다.

이 버스를 순서대로 탈 때, 들어가는 총 환승 비용으로 계산하는 문제이다. 

(전체 버스 간의 환승비용은 이차원 배열로 입력받는다.)

#include <iostream>
using namespace std;

int main() {
	int allBus = 0, useBus = 0, fee = 0;; // 모든 버스의 수, 창영이가 사용할 버스의 수, 총 환승 요금
	cin >> allBus >> useBus;
	if (allBus < 2 || allBus > 100 || useBus > allBus || useBus < 1) return 0; //조건 필터링
    
	int* listUseBus = new int[useBus]; // 창영이가 사용할 버스 동적 할당
	for (int i = 0; i < useBus; i++) {
		cin >> listUseBus[i];
	}
    
	int** listAllBus = new int*[allBus]; //모든 버스에 대한 환승 요금을 가진 2차원 배열
	for (int i = 0; i < allBus; i++) {
		listAllBus[i] = new int[allBus];
		for (int j = 0; j < allBus; j++) {
			cin >> listAllBus[i][j];
		}
	}
    
	for (int i = 0; i < useBus - 1; i++) {
		fee += listAllBus[listUseBus[i]-1][listUseBus[i + 1]-1];
        // listAllBus에서 listUseBus 인덱스(버스) 간의 이동시에 발생하는 환승요금을 찾아서 fee에 더한다.
	} 
	cout << fee;


	for (int i = 0; i < allBus; i++) {
		delete[] listAllBus[i];
	}
	delete[] listAllBus;
	return 0;
}

어렵지 않은 문제였다.

다만, 항상 그렇지만 변수명을 설정하는 것이 참 어렵다. 보다 더 직관적으로 짜는 방법을 터득해야겠다! 그러려면 다른 사람들의 코드를 많이 봐야할 것 같다.

'Algorithm > 백준 문제풀이' 카테고리의 다른 글

[6318번] Box of Bricks  (1) 2023.01.04