Java : 씨름 선수

cad·2022년 1월 10일
0

Algorithm

목록 보기
14/33

문제

풀이

  • 키와 몸무게에서 키를 기준으로 정렬한다.
  • 키나 몸무게가 제일 크면 무조건 선발되므로 첫번째 선수는 선발된다.
  • 몸무게 최대 값 변수를 만들고 순서대로 몸무게 최대 값이 갱신될 때마다 선발 선수가 늘어난다.
  • 왜냐하면 뒤로 갈수록 키는 작아지는데 몸무게가 더 크므로 선발 대상이기 때문이다.

잡담

  • 좌표 정렬의 Comparable를 상속해서 써도 되는지 모르겠다. 얼마 전 롯데 인턴 코테를 봤을 때 IDE를 사용할 수 없고 검색도 안되서 저런게 나오면 외워야하는 건지 애매하다.

전체 코드

package inflearn;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class I0901 {
	static int n;
	static ArrayList<Info> arr;

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		arr = new ArrayList<>();
		for (int i = 0; i < n; i++) {
			int h = sc.nextInt();
			int w = sc.nextInt();

			arr.add(new Info(h, w));
		}
		System.out.println(sol(arr));
	}

	static int sol(ArrayList<Info> arr) {
		int ans = 0;
		Collections.sort(arr);

		int max = Integer.MIN_VALUE;

		for (int i = 0; i < n; i++) {
			if (arr.get(i).weight > max) {
				ans++;
				max = arr.get(i).weight;
			}
		}
		return ans;
	}

	static class Info implements Comparable<Info> {
		int height, weight;

		public Info(int height, int weight) {
			this.height = height;
			this.weight = weight;
		}

		@Override
		public int compareTo(Info o) {
			return o.height - this.height;
		}
	}
}
profile
Dare mighty things!

0개의 댓글