문제 μ„€λͺ…


πŸ’‘ Info

λ‚΄μš©

일직선 μƒμ˜ λ§ˆμ„μ— μ—¬λŸ¬ μ±„μ˜ 집이 μœ„μΉ˜ν•΄ μžˆλ‹€. μ΄μ€‘μ—μ„œ νŠΉμ • μœ„μΉ˜μ˜ 집에 νŠΉλ³„νžˆ ν•œ 개의 μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•˜κΈ°λ‘œ κ²°μ •ν–ˆλ‹€. νš¨μœ¨μ„±μ„ μœ„ν•΄ μ•ˆν…Œλ‚˜λ‘œλΆ€ν„° λͺ¨λ“  μ§‘κΉŒμ§€μ˜ 거리의 총 합이 μ΅œμ†Œκ°€ λ˜λ„λ‘ μ„€μΉ˜ν•˜λ €κ³  ν•œλ‹€. 이 λ•Œ μ•ˆν…Œλ‚˜λŠ” 집이 μœ„μΉ˜ν•œ κ³³μ—λ§Œ μ„€μΉ˜ν•  수 있고, λ…Όλ¦¬μ μœΌλ‘œ λ™μΌν•œ μœ„μΉ˜μ— μ—¬λŸ¬ 개의 집이 μ‘΄μž¬ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

μ§‘λ“€μ˜ μœ„μΉ˜ 값이 μ£Όμ–΄μ§ˆ λ•Œ, μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•  μœ„μΉ˜λ₯Ό μ„ νƒν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

예λ₯Ό λ“€μ–΄ N=4이고, 각 μœ„μΉ˜κ°€ 1, 5, 7, 9일 λ•Œλ₯Ό κ°€μ •ν•˜μž.

이 경우 5의 μœ„μΉ˜μ— μ„€μΉ˜ν–ˆμ„ λ•Œ, μ•ˆν…Œλ‚˜λ‘œλΆ€ν„° λͺ¨λ“  μ§‘κΉŒμ§€μ˜ 거리의 총 합이 (4+0+2+4)=10으둜, μ΅œμ†Œκ°€ λœλ‹€.

πŸ“₯μž…λ ₯ 쑰건

  • 첫째 쀄에 μ§‘μ˜ 수 N이 μžμ—°μˆ˜λ‘œ 주어진닀. (1≀N≀200,000) λ‘˜μ§Έ 쀄에 Nμ±„μ˜ 집에 μœ„μΉ˜κ°€ 곡백을 κΈ°μ€€μœΌλ‘œ κ΅¬λΆ„λ˜μ–΄ 1이상 100,000μ΄ν•˜μ˜ μžμ—°μˆ˜λ‘œ 주어진닀.
4
5 1 7 9

πŸ“€μΆœλ ₯ 쑰건

  • 첫째 쀄에 μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•  μœ„μΉ˜μ˜ 값을 좜λ ₯ν•œλ‹€. 단, μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•  수 μžˆλŠ” μœ„μΉ˜ κ°’μœΌλ‘œ μ—¬λŸ¬ 개의 값이 λ„μΆœλ  경우 κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•œλ‹€.
5


문제 이해


  • νŠΉμ • μœ„μΉ˜μ— μžˆλŠ” μ•ˆν…Œλ‚˜μ™€ 각 μ§‘κ³Όμ˜ 거리의 합이 μ΅œμ†Œκ°€ λ˜λ„λ‘ μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ν•˜κΈ°


μ•Œκ³ λ¦¬μ¦˜ 및 μ΅œμ’… 풀이


μ‹€μ œ 풀이 μ‹œκ°„ : 8λΆ„

  • μž…λ ₯

    • μ§‘μ˜ 수 N μž…λ ₯λ°›κΈ°
    • Nμ±„μ˜ 집 arr μž…λ ₯λ°›κΈ°
  • 계산

    • arr μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•˜κΈ°
    • μ§‘λ“€μ˜ 거리의 μ΅œμ†Œ = μœ„μΉ˜ 상 쀑앙이 κ°€μž₯ μ΅œμ†Œκ°€ 될 κ°€λŠ₯성이 높은 κ²ƒμœΌλ‘œ κ°„μ£Όν•˜μ—¬ κ΅¬ν•˜κΈ°
  • 좜λ ₯

    • 쀑앙 μœ„μΉ˜ 좜λ ₯ν•˜κΈ°
import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        int[] arr = new int[N];
        for(int i=0; i<N; i++){
            arr[i] = sc.nextInt();
        }

        Arrays.sort(arr);

        int result = arr[(N-1)/2];

        System.out.println(result);

    }
}

profile
μ–Έμ  κ°€ λ‚΄ μ½”λ“œλ‘œ 세상에 κΈ°μ—¬ν•  수 μžˆλ„λ‘, BE 개발 기둝 λ…ΈνŠΈβ˜˜οΈ

0개의 λŒ“κΈ€