[BOJ]2309 일곱 난쟁이

곌로그·2023년 11월 14일
0

[java]코딩테스트

목록 보기
4/6
post-thumbnail

문제 링크


문제 요약 🥉 브론즈 2

브론즈 문제 치고는 어느정도의 아이디어가 필요한 Brute Force 문제이다.
가장 핵심적인 것은 9명의 난쟁이 키의 합을 구한 후에 2명 씩 더해서 뺐을 때, 100이 되는 경우에 정답을 출력하면 되는 문제이다.


문제 풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class boj2309
{
    /* 난쟁이의 키 합이 100이 됨 */
    public static void main(String[] args) throws IOException{
        BufferedReader rb = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<Integer> dwarfs = new ArrayList<>(); //가짜 난쟁이 저장 정보
        int sum = 0;

        for(int i=0; i <9; i++)
        {
            int dwarf = Integer.parseInt(rb.readLine());
            sum += dwarf;
            dwarfs.add(dwarf);
        }
        
        Collections.sort(dwarfs); // 오름차순 정렬
        //System.out.println(dwarfs);

        for(int i=0; i<8; i++)
        {
            for (int j=1; j<9; j++)
            {
                if(sum-dwarfs.get(i)-dwarfs.get(j) == 100)
                {
                    /*그냥 단순제거해버리면 arrayList에 변화를 주기 때문에 index 에러 발생 */
                    dwarfs.set(i, 0);
                    dwarfs.set(j, 0);
                    
                    Collections.sort(dwarfs); // 재정렬
                    for(int idx=2; idx<9; idx++)
                    {
                        System.out.println(dwarfs.get(idx));
                    }
                    return;
                }
            }
        }
    }
}

📌 익숙해질 점

  • 개인적으로 ArrayList가 편해서 사용하는데 다른 분들은 그냥 array를 많이 사용하셨다.
  • ArrayList에서 특정 인덱스의 값을 바꿔 줄 때는 .set을 사용하면 된다.
  • ArrayList의 정렬은 Collections 모듈을 사용하면 되는데, Collections.sort(list);로 작성해주면된다.

0개의 댓글