21.08.14 기록

1 분 소요

백준 알고리즘 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);
      }
  }

카테고리:

업데이트: