[백준] 2012번 : 등수 매기기 - JAVA

SUBNY·2023년 8월 1일
0

백준

목록 보기
7/22
post-thumbnail

문제 📕

백준문제캡쳐

(https://www.acmicpc.net/problem/2012)





접근 방법 🧐

백준의 문제를 좀 풀다보면 느껴지는 찝찝함과 쎄함이 있다
1. 시간제한이 1초가 아닐 때!
2. 값의 범위가 제법 클 때!

→ 사실 아직 시간복잡도의 개념과 값의 범위에대한 고려를 잘 못해서 찜찜함을 느끼는 것 같다ㅎㅎ


  • 문제 속 동석차가 없어야한다 → N이 5일 경우 1~5등이 전부 있어야한다.
  • 최소값을 가질려면, 예상 등수와 실제 등수의 차이가 별로 없어야한다.
    → 큰 수 - 큰수 그리고 작은수 - 작은수 (당연한 얘기인가..?)

  1. 예상 등수가 담겨져있는 predict라는 배열을 오름차순으로 정렬해줬다.
  2. (i+1)를 실제 등수라고 여기고, 예측 등수와의 차이를 결과 변수인 result에 더해줬다.



내가 쓴 코드 ✍️

import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int N = Integer.parseInt(br.readLine());
		int[] predict = new int[N];
		long result = 0;
		
		for(int i=0;i<N;i++) {
			predict[i] = Integer.parseInt(br.readLine());
		}
		
		Arrays.sort(predict);
		
		for(int i=0;i<N;i++) {
			result += Math.abs(predict[i]-(i+1));
		}
		
		bw.write(result+"");
		bw.flush();
		bw.close();
	}

}

jjansubin

느낀점 📖

문제를 읽고, 필기하고, 코드를 적고, 제출하고, 스터디 깃에 올리기까지 총 30분도 안 걸린 문제였다. 이정도 수준의 그리디라면 easy~해졌다는거죠 😎😎

profile
대체할 수 없는 풀스택 개발자가 되고 싶어요

0개의 댓글