21.08.14 기록
백준 알고리즘 7568 풀이
🎆나의 풀이(메모리 14.1MB, 시간 124ms로 통과)
-입력값을 두 개의 배열(weight/height)에 저장한 후, 모든 값을 서로 비교하여 카운트한 등수 값을 rankArr 배열에 저장했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class B7568 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
//1. 입력값 저장
StringTokenizer st;
int[] weight = new int[N];
int[] height = new int[N];
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
weight[i] = Integer.parseInt(st.nextToken());
height[i] = Integer.parseInt(st.nextToken());
}
int[] rankArr = new int[N];
for(int i = 0; i < N; i++) {
//2. i인덱스의 몸무게와 키 값을 기준값으로 한다.
int W = weight[i];
int H = height[i];
int rank = 1;
//3. 기준값보다 큰 값이 존재할 때 rank 값을 증가시킨다.
for(int j = 0; j < N; j++) {
if(W < weight[j] && H < height[j]) { rank++; }
}
//4. rank값을 rankArr 배열에서 같은 인덱스값에 저장한다.
rankArr[i] = rank;
}
//5. 등수 비교한 rank값 출력
for(int i = 0; i < N; i++) {
System.out.print(rankArr[i] + " ");
}
}
}
🎆해설(메모리 14.1MB, 시간 128ms로 통과)
-해설은 2차원 배열을 사용했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
//2. 해설
public class B7568 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
int[][] inputs = new int[N][2];
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
inputs[i][0] = Integer.parseInt(st.nextToken());
inputs[i][1] = Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < N; i++) {
int rank = 1;
for(int j = 0; j < N; j++) {
if(i == j) { continue; }
if(inputs[i][0] < inputs[j][0] && inputs[i][1] < inputs[j][1]) { rank++; }
}
sb.append(rank).append(" ");
}
System.out.println(sb);
}
}