티스토리 뷰

반응형

 

 

www.acmicpc.net/problem/20949

 

20949번: 효정과 새 모니터

효정은 새해를 맞이하여 새 모니터를 구매하고자 한다. 효정은 돈이 많기 때문에 77인치 모니터를 구매할 것이다. 모니터를 구경하던 효정은 놀라 자빠질 수밖에 없었다. 모니터가 너무 많아 고

www.acmicpc.net

 

난이도 : 실버 5

 

정렬하는 문제입니다.

PPI가 높은 순서 -> 같다면 번호가 작은 순서로 정렬하면 됩니다.

 

모든 모니터의 크기가 같으므로 나누고 루트 씌울 필요 없이 w^2 + h^2로 계산했습니다.


함수

main

단순히 입력 받고 정렬 후 출력했습니다.

정렬은 람다로 작성해봤습니다.

 

class Monitor

번호와 계산된 값을 변수로 가집니다.

생성자에서 calculator를 호출해 계산된 값을 넣어줍니다.

 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class p20949 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List<Monitor> monitors = new ArrayList<>();
int count = Integer.parseInt(br.readLine());
for(int i = 1; i <= count; i++) {
StringTokenizer stz = new StringTokenizer(br.readLine());
int width = Integer.parseInt(stz.nextToken());
int height = Integer.parseInt(stz.nextToken());
monitors.add(new Monitor(i, width, height));
}
monitors.sort((monitor1, monitor2) ->
monitor1.calculatedValue == monitor2.calculatedValue ?
monitor1.number - monitor2.number : monitor2.calculatedValue - monitor1.calculatedValue);
StringBuilder answer = new StringBuilder();
for(Monitor monitor : monitors) {
answer.append(monitor.number).append("\n");
}
System.out.println(answer.toString());
}
static class Monitor {
int number, calculatedValue;
Monitor(int _number, int width, int height) {
number = _number;
calculatedValue = calculate(width, height);
}
private int calculate(int width, int height) {
return (int) (Math.pow(width, 2) + Math.pow(height, 2));
}
}
}
view raw p29049.java hosted with ❤ by GitHub
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함