[JAVA] 프로그래머스 : 전국 대회 선발 고사

조예빈·5일 전
0

Coding Test

목록 보기
132/136

https://school.programmers.co.kr/learn/courses/30/lessons/181851
총 두 가지 방법으로 풀어 보았다. compare메소드를 사용해서 정렬한 코드인 첫 번째 코드보다 comparingInt를 이용하여 작성한 코드가 더 간단하다.

import java.util.*;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        ArrayList<int[]> list = new ArrayList<>();
        
        for(int i=0; i<rank.length; i++){
            if(attendance[i] == true){
                list.add(new int[]{rank[i],i});
            }
        }
        Collections.sort(list, new Comparator<int[]>(){
            @Override
            public int compare(int[] a, int[] b){
                return a[0]-b[0];
            }
        });
        answer = 10000 * list.get(0)[1] + 100 * list.get(1)[1] + list.get(2)[1];
        return answer;
    }
}
import java.util.*;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        ArrayList<int[]> list = new ArrayList<>();
        
        for(int i=0; i<rank.length; i++){
            if(attendance[i] == true){
                list.add(new int[]{rank[i],i});
            }
        }
        Collections.sort(list, Comparator.comparingInt(a -> a[0])); //배열의 첫 번째 요소를 기준으로 비교
        //a라는 배열을 받아서 그 배열의 첫 번째 요소 반환
        answer = 10000 * list.get(0)[1] + 100 * list.get(1)[1] + list.get(2)[1];
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글