매일 Algorithm (2차원 정렬)

신재원·2023년 2월 18일
0

Algorithm

목록 보기
41/243

프로그래머스 (LEVEL 1)

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        String[] day = { "FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU" };
        // 6월로 한정지어서 가능한 배열
        int[] date = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        int allDate = 0;

        for (int i = 0; i < a - 1; i++) {
            allDate += date[i];
        }

        allDate += (b - 1);
        answer = day[allDate % 7];

        return answer;
    }
}

백준 11650번 (정렬)

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class problem97 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);



        int n = in.nextInt();
        int [][] arr = new int [n][2];

        for(int i = 0; i < n; i++) {
            arr[i][0] = in.nextInt();
            arr[i][1] = in.nextInt();
        }

        // 2차원 배열 오름차순 정렬
        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0] == o2[0]) {
                    return o1[1] - o2[1];
                }else {
                    return o1[0] - o2[0];
                }
            }
        });

        for(int i = 0; i < n; i++) {
            System.out.println(arr[i][0] + " " + arr[i][1]);
        }
    }
}

백준 9237번 (그리디 알고리즘)

import java.util.Arrays;
import java.util.Scanner;

public class problem78 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int size = in.nextInt();


        int [] array = new int[size];

        for(int i = 0; i < size; i++) {
            array[i] = in.nextInt();
        }
        Arrays.sort(array);


        int index = 0;
        int []reverseArr = new int[size];

        for(int j = array.length-1; j >= 0; j--) {
            reverseArr[index] = array[j]; // 3210
            index++;
        }
        
        int max = 0;
        for(int k = 0; k < reverseArr.length; k++ ){
        /**
        * k를 더해주는 이유는 나무를 하루에 한번에 사는게 
        * 아닌 순서대로 하루에 하나씩 사기때문
        **/
            // +1 은 시작일이 1일 부터 측정
            max = Math.max(max, reverseArr[k] + k + 1);
        }

        // 다 심은 다음날 이장님 초대
        max +=1;
        System.out.print(max);

    }
}

백준 11651번 (정렬)

import java.util.Arrays;
import java.util.Scanner;

public class problem98 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);


        int n = in.nextInt();
        int [][] arr = new int [n][2];

        for(int i = 0; i < n; i++) {
            arr[i][1] = in.nextInt();
            arr[i][0] = in.nextInt();
        }

        // 2차원 배열 오름차순 정렬
        Arrays.sort(arr, (e1, e2) -> {
            if(e1[0] == e2[0]) {
                return e1[1] - e2[1];
            } else {
                return e1[0] - e2[0];
            }
        });

        for(int i = 0; i < n; i++) {
            System.out.println(arr[i][1] + " " + arr[i][0]);
        }
    }
        /* 입력 예시
0 4
1 2
1 -1
2 2
3 3
*/

    /* 로직 입력 실행후
    4 0
    2 1
    -1 1
    2 2
    3 3
    */

}

백준 10814번 (정렬)

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class problem99 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);



        int n = in.nextInt();
        String [][] arr = new String[n][2];
        for(int i = 0; i < n ; i++) {

            arr[i][0] = in.next(); // 나이
            arr[i][1] = in.next(); // 이름
        }

        Arrays.sort(arr, new Comparator<String[]>(){
            // 2차원배열 오름차순 정렬 , (나이순으로정렬)
            @Override
            public int compare (String[] s1, String[] s2) {
                return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
            }
        });

        for(int i = 0 ; i < n; i++) {
            System.out.println(arr[i][0] + " " + arr[i][1]);


        }

    }
}
- 문자열
  Arrays.sort(arr, new Comparator<String[]>(){
            @Override
            public int compare (String[] s1, String[] s2) {
                return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
            }
        });
        
- 정수형
 Arrays.sort(arr, (e1, e2) -> {
            if(e1[0] == e2[0]) {
                return e1[1] - e2[1];
            } else {
                return e1[0] - e2[0];
            }
        });

0개의 댓글