1 λΆ„ μ†Œμš”

πŸ“ [B1_14696] 딱지놀이

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 Main {
    static StringTokenizer st;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // λΌμš΄λ“œ 수
        int N = Integer.parseInt(br.readLine());

        for(int i=0; i<N; i++){
            String res = "";
            st = new StringTokenizer(br.readLine(), " ");

            int A_size = Integer.parseInt(st.nextToken());
            ArrayList<Integer> A = new ArrayList<Integer>();

            for(int j=0; j<A_size; j++){
                A.add(Integer.parseInt(st.nextToken()));
            }

            st = new StringTokenizer(br.readLine(), " ");

            int B_size = Integer.parseInt(st.nextToken());
            ArrayList<Integer> B = new ArrayList<Integer>();

            for(int j= 0; j<B_size; j++){
                B.add(Integer.parseInt(st.nextToken()));
            }

            Collections.sort(A, Collections.reverseOrder());
            Collections.sort(B, Collections.reverseOrder());

            // Aμ‚¬μ΄μ¦ˆκ°€ 더 큰경우
            if(A.size()>B.size()){
                for(int j=0; j<A.size();j++){
                    if(A.get(j)>B.get(j)){
                        res += "A";
                        break;
                    }
                    else if(A.get(j)<B.get(j)){
                        res += "B";
                        break;
                    }
                    // 같은 경우
                    else{
                        if(j == (B.size()-1)){
                            res += "A";
                            break;
                        }
                        continue;
                    }
                }
            }
            // B μ‚¬μ΄μ¦ˆκ°€ 더 큰경우
            else if(A.size()<B.size()){
                for(int j=0; j<B.size();j++){
                    if(A.get(j)>B.get(j)){
                        res += "A";
                        break;
                    }
                    else if(A.get(j)<B.get(j)){
                        res += "B";
                        break;
                    }
                    // 같은 경우
                    else{
                        if(j == (A.size()-1)){
                            res+="B";
                            break;
                        }
                        continue;
                    }
                }
            }
            // μ‚¬μ΄μ¦ˆκ°€ 같은 경우
            else{
                for(int j=0; j<A.size();j++){
                    if(A.get(j)>B.get(j)){
                        res += "A";
                        break;
                    }
                    else if(A.get(j)<B.get(j)){
                        res += "B";
                        break;
                    }
                    // 같은 경우
                    else{
                         if(j == (A.size()-1)){
                             res+="D";
                             break;
                         }
                         continue;
                    }
                }
            }

            sb.append(res).append("\n");
        }
        System.out.println(sb);
    }
}

πŸ€” λ‚˜μ˜ 생각

λ‚˜λŠ” 이 문제λ₯Ό 보고 μž…λ ₯받은 문자λ₯Ό μ •λ ¬ν•˜μ—¬ κ·Έ 배열듀을 μ²˜μŒλΆ€ν„° λΉ„κ΅ν•΄μ„œ 크면 κ·Έ μͺ½μ„ 좜λ ₯ν•΄μ£Όλ©΄ λ˜κ² λ‹€ μƒκ°ν•˜κ³  μ½”λ“œλ₯Ό μ§°λ‹€..
계속 μ§œλ‹€ λ³΄λ‹ˆ 쑰건듀이 μ’€ μžˆμ–΄μ„œ μ½”λ“œκ°€ 많이 κΈΈμ–΄μ‘ŒλŠ”λ°..
λ‹€λ₯Έ μŠ€ν„°λ”” μ›λ“€μ˜ μ½”λ“œλ₯Ό λ³΄λ‹ˆ.. 훨씬 짧닀.. μ•Œκ³ λ³΄λ‹ˆ λ‹€λ“€ 1,2,3,4,5λ₯Ό 배열에 λ„£μ–΄μ€˜μ„œ μΉ΄μš΄νŒ…μ„ ν•΄μ€˜μ„œ κ·Έλƒ₯ κ·Έ 두 배열을 λΉ„κ΅ν•œ 것이닀..
이 과정은 λ°°μ—΄μ˜ 크기λ₯Ό μ•Œμ•„λ‚΄λŠ” 과정도 ν•„μš”μ—†κ³  λ°°μ—΄ λ‘κ°œκ°€ λ‹¬λΌμ§ˆ 걱정도 μ—†μ–΄μ„œ.. 훨씬 κ°„λ‹¨ν–ˆλ‹€.
μ΄λž˜μ„œ 처음 λ°©ν–₯을 κ²°μ •ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.. μ‹ μ€‘ν•˜κ²Œ κ²°μ •ν•˜λ„λ‘ !!