• 문제 링크
15723번: n단 논법
m개의 줄에 걸쳐 각 줄에 결론이 참인지 거짓인지 출력하라. 참일 경우 T, 거짓일 경우 F를 출력하라. 알 수 없는 경우도 거짓이다. 답은 필히 대문자로 출력해야 한다.
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static boolean[][] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
arr = new boolean[26][26];
while (n-- > 0) {
String input = br.readLine();
int src = input.charAt(0) - 'a';
int tgt = input.charAt(input.length() - 1) - 'a';
arr[src][tgt] = true;
}
floydWarshall();
int m = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while (m-- > 0) {
String input = br.readLine();
int src = input.charAt(0) - 'a';
int tgt = input.charAt(input.length() - 1) - 'a';
sb.append(arr[src][tgt] ? "T" : "F").append("\n");
}
bw.write(sb.toString());
bw.flush();
}
private static void floydWarshall() {
for (int k = 0; k < 26; k++) {
for (int i = 0; i < 26; i++) {
if (i == k)
arr[i][k] = true;
for (int j = 0; j < 26; j++) {
if (arr[i][k] && arr[k][j])
arr[i][j] = true;
}
}
}
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 2910 빈도 정렬 - Data Structure / Java (0) | 2023.03.10 |
---|---|
[백준] 1822 차집합 - Data Structure / Java (0) | 2023.03.09 |
[백준] 14675 단절점과 단절선 - Graph Theory / Java (0) | 2023.03.07 |
[백준] 15558 점프 게임 - Graph Theory / Java (0) | 2023.03.06 |
[백준] 12761 돌다리 - Graph Theory / Java (0) | 2023.03.05 |
댓글