Java에서는 Arrays.sort() 함수를 이용해서 array를 정렬할 수 있다.
public class ArrayTest {
public static void main(String args[]){
Integer[] arrayTest = {2,3,2,4,56,7,43,21};
Arrays.sort(arrayTest, Collections.reverseOrder());
for(int i : arrayTest){
System.out.print(i + " ");
}
}
}
DESC 정렬을 하고 싶으면 인자에 Collections.reverseOrder()를 같이 넘겨준다. Arrays의 parameter는 Generic type이므로 int가 아니라 Integer로 선언을 해주어야 한다.
행 -> 가로 : 세로의 길이 : 행의 길이
열 -> 세로 : 가로의 길이 : 열의 길이
참조 블로그
Arrays.sort()의 두번째 parameter는 Comparator를 사용한다.
고로 Comparator를 손보면 된다.
public class SortTest {
public static void main(String args[]) {
int data[][] = {{4,3},{4,1},{1,2}};
Arrays.sort(data, Comparator.comparingInt(num->num[0]));
for(int i[] : data){
for(int j : i){
System.out.print(j + " ");
}
System.out.println("");
}
}
}
Comparator.comparingInt(num->num[0]) = 배열의 0번째 요소 기준으로 2차원 배열을 정렬, 1이면 첫번째 요소를 기준으로 정렬
2차원 배열이 주어진다. 2차원 배열의 행에서 가장 작은 수들 중에 가장 큰 수를 출력하는 문제
2차원 배열이 주어진다.
라는 생각에 2차원 배열을 선언하고 각 행을 정렬해서 최소값을 추출하려고 했다. 그렇게 해도 되나 복잡해진다. 해설에 더 간단한 방법이 있었다.
public class GreedyCardGameOfNumberPage96 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
// N, M을 공백을 기준으로 구분하여 입력 받기
int n = sc.nextInt();
int m = sc.nextInt();
int result = 0;
// 한 줄씩 입력 받아 확인하기
for (int i = 0; i < n; i++) {
// 현재 줄에서 '가장 작은 수' 찾기
int min_value = 10001;
for (int j = 0; j < m; j++) {
int x = sc.nextInt();
min_value = Math.min(min_value, x);
}
// '가장 작은 수'들 중에서 가장 큰 수 찾기
result = Math.max(result, min_value);
}
System.out.println(result); // 최종 답안 출력
}
}
최소값만 찾으면 되므로, 2차원 배열을 굳이 선언하지 않아도 입력 단계에서 찾아도 된다. Math 함수를 이용해서 최소값을 찾는다.
number와 k를 입력받는데, 두가지 선택을 할 수 있다. number가 k로 나누어 떨어질경우 k로 계속 나누고, 아닐 경우 1을 빼준다. 1이 될때까지 시행한 횟수?
public class GreedyUntilOnePage99 {
public static void main(String args[]) {
int number=17;
int count=0;
int K=4;
while(number !=1){
if(number%K==0){
number /= K;
}else{
number -= 1;
}
count++;
}
System.out.println(count);
}
}
나누어 떨어지는 것을 어떻게 하지? 라고 생각했는데 % 연산자가 있었다. while loop에서 살짝 헷갈렸었고, if{count++} else{ count ++} 로 했었는데 sonarLint 에서 겹치는 것 ( count )를 밖으로 빼는 것을 추천을 했다.