프로그래머스 (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];
}
});