Coding 01

백준[30502]번 : 미역은 식물 아닌데요 ( JAVA ) 본문

백준

백준[30502]번 : 미역은 식물 아닌데요 ( JAVA )

하루우울루 2023. 11. 13. 10:47

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

 

30502번: 미역은 식물 아닌데요

세종이는 미역을 식물로 분류해야 한다고 생각하고 있다. 식물은 광합성을 하고 운동성이 없으며, 광합성을 하고 운동성이 없으면 식물이므로 미역 역시 식물의 일종으로 분류되어야 한다는 것

www.acmicpc.net


Code

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		int[] p = new int[N+1];
		int[] m = new int[N+1];
		
		int mincount = 0;
		int maxcount = 0;
		
		for(int i=0;i<M;i++) {
			st = new StringTokenizer(br.readLine());
			
			int a = Integer.parseInt(st.nextToken());
			String b = st.nextToken();
			int c = Integer.parseInt(st.nextToken());
			
			if(b.equals("P")){
				if(c == 1) {
					p[a] = 1;
				}
				else {
					p[a] = -1;
				}
			}
			else {
				if(c == 0) {
					m[a] = 1;
				}
				else {
					m[a] = -1;
				}
			}
		}
		
		for(int i=1;i<=N;i++) {
			if(p[i] != -1 && m[i] != -1) {
				maxcount++;
				if(p[i] == 1 && m[i] == 1) {
					mincount++;
				}
			}
		}
		
		bw.write(mincount+" "+maxcount);
		
		br.close();
		bw.close();
	}
}

광합성 p 배열, 운동성 m 배열에 값을 저장했다.

광합성을 한다면 1, 아니면 -1을 저장하고 정보가 없는 경우를 0이라 한다.

운동성이 없다면 1, 있다면 -1, 정보가 없는 경우는 0을 저장한다.

 

		for(int i=1;i<=N;i++) {
			if(p[i] != -1 && m[i] != -1) {
				maxcount++;
				if(p[i] == 1 && m[i] == 1) {
					mincount++;
				}
			}
		}

 

조건에 따라 최솟값과 최댓값을 구하는 방법을 잘 정해줘야 한다.