-
백준 15723 n단 논법 - C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 5. 30. 18:01반응형
#include <iostream> #include <string> #include <vector> using namespace std; int n, m; char inputFrom, inputTo; bool alphabet[27][27]; string isTemp; void Floyd(){ for(int via = 1; via <= 26; via++){ for(int to = 1; to <= 26; to++){ if(!alphabet[via][to]) continue; for(int from = 1; from <= 26; from++){ if(!alphabet[from][via]) continue; if(alphabet[via][to] == true && alphabet[from][via] == true) alphabet[from][to] = true; if(alphabet[via][to] == false && alphabet[from][via] == false) alphabet[from][to] = false; } } } } int main(){ cin >> n; // a - 97 while(n--){ cin >> inputFrom >> isTemp >> inputTo; alphabet[inputFrom - 96][inputTo - 96] = true; alphabet[inputTo - 96][inputFrom - 96] = false; } Floyd(); cin >> m; while (m--){ cin >> inputFrom >> isTemp >> inputTo; if(alphabet[inputFrom - 96][inputTo - 96]) printf("T\n"); else printf("F\n"); } }
기본적인 플로이드-와샬 알고리즘으로 처음 input을 받을 때 a의 아스키코드 값이 97이므로 -96을 해서 a가 1로 받아지게 처리를 했습니다. 또한 문제 풀이를 할 때 alphabet 배열을 int로 선언을 하고 true라면 1, false라면 -1로 했는데 풀이에 실패했습니다. 대신 bool배열이 더 용량이 작으니 위 풀이 방식이 더 좋은 듯 합니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1916 최소비용 구하기 - C++, 다익스트라 (0) 2021.06.01 백준 11779 최소비용 구하기 2 - C++, 다익스트라 경로추적 (1) 2021.06.01 백준 1613 역사 - C++ (0) 2021.05.28 백준 11404 플로이드 - C++ (0) 2021.05.28 백준 4179 불! - C++ (0) 2021.05.26