PS (C, C++)

[백준/C++] 15723 n단 논법

최연재 2024. 11. 11. 21:30

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

코드

#include <iostream>
#include <string>
using namespace std;

#define FASTIO ios::sync_with_stdio(false); cin.tie(NULL);
int n, m, parent[27];

int main() {
	FASTIO;
	fill(parent, parent + 27, -1);

	cin >> n;
	string a, tmp, b;
	for (int i = 0; i < n; i++) {
		cin >> a >> tmp >> b;
		parent[a[0] - 'a'] = b[0] - 'a';
	}

	cin >> m;
	for (int i = 0, s, e; i < m; i++) {
		cin >> a >> tmp >> b;
		s = a[0] - 'a', e = b[0] - 'a';
		while (s != e && parent[s] != -1)
			s = parent[s];

		if (s == e) cout << "T\n";
		else cout << "F\n";
	}
	return 0;
}

설명

a is b 관계는 a에서 b로 갈 수 있음을 의미하니 이를 parent 배열에 기록합니다. m개의 결론을 받으면 a에서 출발해서 b로 도착할 수 있는지를 반복문으로 확인한 후에 최종 결과에 따라 T 혹은 F를 출력하면 됩니다.

 

느낀 점

parent 배열 초기화와 관련해서 한 번 틀렸었습니다. 관련 코드를 추가한 후 제출하니 맞았습니다.