22.02.16 백준 2309번

김민혁·2022년 2월 16일
0

하루한문제

목록 보기
7/22

문제


첫번째로 제출한 답

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<Integer> list_h = new ArrayList<>();
		int sum = 0;
		int[] arr_target = new int[2];
		
		for (int i = 0; i < 9; i++) {
			list_h.add(sc.nextInt());
			sum += list_h.get(i);
		}

		for (int i = 0; i < 9; i++) {
			for (int j = i+1; j < 9; j++) {
				if(sum-list_h.get(i)-list_h.get(j)==100) {
					arr_target[0] = list_h.get(i);
					arr_target[1] = list_h.get(j);
				}
			}
		}
		
		list_h.remove((Integer)arr_target[0]);
		list_h.remove((Integer)arr_target[1]);
		//오름차순정렬
		list_h.sort(Comparator.naturalOrder());
		
		for (int i = 0; i < list_h.size(); i++) {
			System.out.println(list_h.get(i));
		}
	}
}

접근방식 -> 일곱난쟁이의 키의 합이 = 100이기 때문에 아홉난쟁이의 키의 합 - 가짜난쟁이 2명의 키 = 100 이다 이중 for문으로 전체를 조회하며
sum-list_h.get(i)-list_h.get(j)==100 인경우 i번째 난쟁이와 j번째 난쟁이가 가짜이기 때문에 해당 값(난쟁이의 키)을 기억해뒀다가 for문 종료후 해당값을 list에서 삭제한다.

결과 -> 정답

특이사항 -> ArrayList.remove() 메소드를 이용해 특정 "정수" 값을 가진 요소를 삭제할때는 객체화 시켜서 파라미터에 넣어주어야 한다
이유는 int로 바로 넣었을때 오버로딩 되어있는 remove(int index)
메소드가 실행되기때문이다.

remove(int index) -> 해당 index의 객체를 삭제한다


remove(Object o)-> 해당값을 가진 객체를 삭제한다.'

profile
안녕하세요 김민혁입니다.

0개의 댓글