๊ธฐ๋ก๋ฐฉ

BOJ_1744 : ์ˆ˜ ๋ฌถ๊ธฐ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1744 : ์ˆ˜ ๋ฌถ๊ธฐ

Soom_1n 2024. 2. 11. 21:41

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1744๋ฒˆ: ์ˆ˜ ๋ฌถ๊ธฐ

๊ธธ์ด๊ฐ€ N์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๊ทธ๋ƒฅ ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๋ชจ๋‘ ๋”ํ•ด์„œ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ˆ˜์—ด์˜ ๋‘ ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•  ๋•Œ, ์œ„์น˜์—

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • N๊ฐœ์˜ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์žˆ๋‹ค.
    • ๋‘ ์ˆ˜๋ฅผ ๋ฌถ์–ด์„œ ๊ณฑ์…ˆ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋‚˜๋จธ์ง€๋Š” ํ•ฉ์—ฐ์‚ฐ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์˜ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ๊ณฑ์…ˆ ์—ฐ์‚ฐ์œผ๋กœ ์ตœ๋Œ€๊ฐ’์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€์ดํ•œ๋‹ค.
    • ์ˆ˜์—ด์„ ์ •๋ ฌ ํ›„, 1๋ณด๋‹ค ํฐ ์ˆ˜ ์ค‘์—์„œ ํฌ๊ธฐ๊ฐ€ ํฐ ์ˆ˜๋ฅผ ์šฐ์„ ์œผ๋กœ ์ง์„ ์ง€์–ด ๊ณฑ์…ˆ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • ์ˆ˜๊ฐ€ 1 ๋ฏธ๋งŒ์ธ ์ˆ˜๋“ค์€ ์Œ์ˆ˜๋ผ๋ฆฌ ๋งŒ๋‚˜ ์–‘์ˆ˜๊ฐ€ ๋˜๊ฑฐ๋‚˜, 0๊ณผ ํ•ฉ์ณ์ ธ ์Œ์ˆ˜๊ฐ€ ์ง€์›Œ์ง€๋ฏ€๋กœ ์ง์„ ์ง“๋Š”๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

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[] arr = new int[N];

        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }

        Arrays.sort(arr);

        int answer = 0;
        int right = N - 1;
        int left = 0;

        while (right > 0) {
            if (arr[right] > 1 && arr[right - 1] > 1) {
                answer += arr[right] * arr[right - 1];
            } else break;
            right -= 2;
        }

        while (left < right) {
            if (arr[left] < 1 && arr[left + 1] < 1) {
                answer += arr[left] * arr[left + 1];
            } else break;
            left += 2;
        }

        for (int i = left; i <= right; i++) {
            answer += arr[i];
        }

        bw.write(Integer.toString(answer));
        bw.flush();
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • N๊ฐœ์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด arr์— ์ €์žฅํ›„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.
  • ๋’ค์ชฝ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋‘ ์›์†Œ๊ฐ€ ๋ชจ๋‘ 1๋ณด๋‹ค ํฌ๋ฉด, ์ง์„ ์ง€์–ด ๊ณฑ์…ˆ ์—ฐ์‚ฐ ํ›„ ๋ˆ„์ ํ•œ๋‹ค.
  • ์•ž์ชฝ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋‘ ์›์†Œ๊ฐ€ ๋ชจ๋‘ 1๋ณด๋‹ค ์ž‘์œผ๋ฉด, ์ง์„ ์ง€์–ด ๊ณฑ์…ˆ ์—ฐ์‚ฐ ํ›„ ๋ˆ„์ ํ•œ๋‹ค.
  • ๊ณฑ์…ˆ ์—ฐ์‚ฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ธ left ~ right ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋ˆ„์ ํ•œ๋‹ค.
  • ๋ˆ„์ ๋œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋ฌธ์ œ์— ์ œ์‹œ๋œ ์˜ˆ์ œ ์ž…๋ ฅ์ด ๋‹ค์–‘ํ•ด์„œ ๋ฐ”๋กœ ํ’€์ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • ์ฒ˜์Œ์—” ๋’ค์ชฝ ์ธ๋ฑ์Šค๋งŒ ํ™•์ธํ–ˆ๋Š”๋ฐ, ์Œ์ˆ˜๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑธ ์˜ˆ์ œ ์ž…๋ ฅ 4๋ฒˆ์—์„œ ์•Œ๊ณ  ์•ž์ชฝ ์ธ๋ฑ์Šค ํ™•์ธ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

 

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1456 : ๊ฑฐ์˜ ์†Œ์ˆ˜  (0) 2024.02.18
BOJ_11444 : ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 6  (0) 2024.02.12
BOJ_1715 : ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ  (0) 2024.02.11
BOJ_1300 : K๋ฒˆ์งธ ์ˆ˜  (0) 2024.02.05
BOJ_2343 : ๊ธฐํƒ€ ๋ ˆ์Šจ  (0) 2024.02.05