๊ธฐ๋ก๋ฐฉ

BOJ_1940 : ์ฃผ๋ชฝ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1940 : ์ฃผ๋ชฝ

Soom_1n 2022. 9. 24. 16:59

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

 

1940๋ฒˆ: ์ฃผ๋ชฝ

์ฒซ์งธ ์ค„์—๋Š” ์žฌ๋ฃŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 15,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ฐ‘์˜ท์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ์ˆ˜ M(1 ≤ M ≤ 10,000,000) ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์…‹์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์žฌ๋ฃŒ๋“ค์ด ๊ฐ€์ง„ ๊ณ 

www.acmicpc.net



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

  • n๊ฐœ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ๊ทธ ์ค‘์— 2๊ฐœ์˜ ํ•ฉ์ด m์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int m = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());

        int arr[] = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = Integer.parseInt(st.nextToken());

        int answer = 0;
        for (int i = 0; i < n - 1; i++){
            for (int j = i+1; j < n; j++){
                if (arr[i] + arr[j] == m)
                    answer++;
            }
        }
        System.out.println(answer);
    }
}

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

  • n, m ๊ณผ n๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์Œ์˜ ํ•ฉ์ด m์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

๐Ÿ”ธ ๋‹ค๋ฅธ ํ’€์ด ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int m = Integer.parseInt(br.readLine());
        int arr[] = new int[n];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++)
            arr[i] = Integer.parseInt(st.nextToken());

        Arrays.sort(arr);

        int answer = 0;
        int i = 0;
        int j = n - 1;
        while(i < j){
            if (arr[i] + arr[j] < m) i++;
            else if (arr[i] + arr[j] > m) j--;
            else {
                answer++;
                i++;
                j--;
            }
        }
        System.out.println(answer);
        br.close();
    }
}
  • ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ’€๊ธฐ์œ„ํ•ด ์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค.
  • i๋Š” ๋งจ ์ฒ˜์Œ ์ธ๋ฑ์Šค, j๋Š” ๋งจ ๋งˆ์ง€๋ง‰ ์—”๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ํ•ฉ์ด m์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    • ํ•ฉ < m ์ด๋ฉด, i๋ฅผ 1์ฆ๊ฐ€์‹œํ‚จ๋‹ค. (์ž‘์€ ์ชฝ์„ ํ‚ค์›€์œผ๋กœ์„œ ํ•ฉ์„ ์กฐ๊ธˆ์”ฉ ์ฆ๊ฐ€์‹œํ‚ด)
    • ํ•ฉ > m ์ด๋ฉด, j๋ฅผ 1๊ฐ์†Œ์‹œํ‚จ๋‹ค. (ํฐ ์ชฝ์„ ์ค„์ž„์œผ๋กœ์„œ ํ•ฉ์„ ์กฐ๊ธˆ์”ฉ ๊ฐ์†Œ์‹œํ‚ด)
    • ํ•ฉ == m ์ด๋ฉด, i๋ฅผ ์ฆ๊ฐ€, j๋ฅผ ๊ฐ์†Œ ์‹œํ‚จ๋‹ค. (๋ฐ”๋กœ ๋‹ค์Œ ์Œ์„ ํ™•์ธํ•จ)

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋ธŒ๋ฃจํŠธ ํฌ์Šค์‹์œผ๋กœ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ, ์ •๋ ฌ ํ›„ ํˆฌํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋Š”๊ฒŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ ˆ๋ฐ˜๊นŒ์ง€ ๋‚ด๋ ค๊ฐ”๋‹ค.

728x90

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

BOJ_4673 : ์…€ํ”„ ๋„˜๋ฒ„  (0) 2022.09.28
BOJ_1253 : ์ข‹๋‹ค  (0) 2022.09.24
BOJ_2018 : ์ˆ˜๋“ค์˜ ํ•ฉ 5  (0) 2022.09.24
BOJ_10986 : ๋‚˜๋จธ์ง€ ํ•ฉ  (0) 2022.09.23
BOJ_1384 : ๋ฉ”์‹œ์ง€  (0) 2022.09.23