Jakorithm
article thumbnail
728x90

문제

https://www.codetree.ai/training-field/search/problems/three-little-brothers?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

N번에 걸쳐 정확히 세 마리의 소가 방을 계속 드나듭니다. 지나갈 때마다 농장 주인이 그들의 이름을 적습니다. 가장 많이 방에 들어온 조합이 몇 번 방에 들어왔는지를 구하는 프로그램을 작성해 보세요.

 

입력 예시

5
BESSIE ELSIE MATILDA
FRAN BESSIE INGRID
BESSIE ELSIE MATILDA
MATILDA INGRID FRAN
ELSIE BESSIE MATILDA

 

출력 예시

3

 

 

코드

첫 번째 줄에 정수 n이 주어지고, 두 번째 줄부터 n개의 줄에 걸쳐 방문한 세 마리의 소 이름이 공백으로 구분되어 주어진다.

  • 소의 이름은 1글자 이상 10글자 이하의 대문자 알파벳
import java.io.*;
import java.util.*;

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;

        int n = Integer.parseInt(br.readLine());
        // 방문한 소의 그룹 key, 방문한 횟수 value
        Map<String, Integer> map = new HashMap<>();

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            // 각 소의 이름을 담을 배열
            String[] cows = new String[3];
            cows[0] = st.nextToken();
            cows[1] = st.nextToken();
            cows[2] = st.nextToken();

            // 배열 오름차순 정렬
            Arrays.sort(cows);

            // 배열의 요소를 연결하여 문자열로 변환
            String key = String.join("", cows);

            // 연결한 문자열을 key로, value를 1씩 증가
            map.put(key, map.getOrDefault(key, 0) + 1);
        }

        // 가장 많이 방문한 소 그룹 세기
        Set<String> keySet = map.keySet();
        int result = 0;
        for (String key : keySet) {
            Integer num = map.get(key);
            if (result < num) {
                result = num;
            }
        }

        bw.write(String.valueOf(result));

        bw.flush();
        bw.close();
    }
}

 

728x90