🌞Algorithm/🔥Baekjoon

[Baekjoon] 9872_Record Keeping

뿌야._. 2024. 10. 21. 14:32
문제(출처: https://www.acmicpc.net/problem/9872)

< Record Keeping >

 

문제 풀이 

 

각 그룹을 저장하는 ArrayList와 그룹이 등장한 횟수를 세는 ArrayList를 활용한다.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class _9872_ { // Record Keeping
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int N = Integer.parseInt(bf.readLine());
		ArrayList<ArrayList<String>> list = new ArrayList<>();
		ArrayList<Integer> cnt = new ArrayList<>();
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(bf.readLine());
			ArrayList<String> temp = new ArrayList<>();
			for (int j = 0; j < 3; j++) {
				temp.add(st.nextToken());
			}
			Collections.sort(temp);
			if (list.size() == 0) {
				list.add(temp);
				cnt.add(1);
				continue;
			}
			boolean flag = false;
			for (int j = 0; j < list.size(); j++) {
				flag = false;
				for (int k = 0; k < 3; k++) {
					if (!list.get(j).get(k).equals(temp.get(k))) {
						flag = true;
						break;
					}
				}
				if (!flag) {
					cnt.set(j, cnt.get(j) + 1);
					break;
				}
			}
			if (flag) {
				list.add(temp);
				cnt.add(1);
			}
		}
		Collections.sort(cnt, Collections.reverseOrder());
		System.out.println(cnt.get(0));
	}
}
변수)
N : 입력 크기
list : 그룹을 저장하는 ArrayList
cnt : 그룹이 등장하는 횟수를 저장하는 ArrayList
temp : 각 그룹
flag : 그룹 등장 여부

 

입력 크기를 입력받는다. 입력 크기만큼 그룹을 입력받아 정렬한다. 각 그룹이 이미 존재하는 그룹이라면 cnt를 증가하고 새로운 그룹이라면 list와 cnt를 추가한다. 최종 cnt를 내림차순으로 정렬한 후 0번째 값을 출력한다.