Algorithm/문제 풀이 / / 2023. 6. 16. 13:59

[BAEKJOON_15723 - JAVA] n단 논법

반응형

문제

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

 

15723번: n단 논법

m개의 줄에 걸쳐 각 줄에 결론이 참인지 거짓인지 출력하라. 참일 경우 T, 거짓일 경우 F를 출력하라. 알 수 없는 경우도 거짓이다. 답은 필히 대문자로 출력해야 한다.

www.acmicpc.net

 

JAVA코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class Main {

	private static int n, m;
	private static Map<Character, Character> map;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		map = new HashMap<Character, Character>();
		for (int idx = 0; idx < n; idx++) {
			st = new StringTokenizer(br.readLine());
			char key = st.nextToken().charAt(0);
			st.nextToken();
			char val = st.nextToken().charAt(0);
			map.put(key, val);
		}

		st = new StringTokenizer(br.readLine());
		m = Integer.parseInt(st.nextToken());

		for (int idx = 0; idx < m; idx++) {
			st = new StringTokenizer(br.readLine());
			char key = st.nextToken().charAt(0);
			st.nextToken();
			char val = st.nextToken().charAt(0);
			System.out.println(find(key, val) ? "T" : "F");
		}
	}

	public static boolean find(char key, char target) {
		boolean ret = false;
		if (!map.containsKey(key) || (map.get(key).charValue() == key)) {
			return false;
		} else if (map.get(key).charValue() == target) {
			return true;
		} else {
			ret = find((map.get(key).charValue()), target);
		}
		return ret;
	}

}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유