Vibe.ai
λ°˜μ‘ν˜•

문제

  • κ³¨λ“œλ°”νμ˜ μΆ”μΈ‘: 2보닀 큰 μ§μˆ˜λŠ” 두 μ†Œμˆ˜μ˜ ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

짝수 N을 두 μ†Œμˆ˜μ˜ ν•©μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” ν‘œν˜„μ„ κ³¨λ“œλ°”ν νŒŒν‹°μ…˜μ΄λΌκ³  ν•œλ‹€. 짝수 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, κ³¨λ“œλ°”ν νŒŒν‹°μ…˜μ˜ 개수λ₯Ό κ΅¬ν•΄λ³΄μž. 두 μ†Œμˆ˜μ˜ μˆœμ„œλ§Œ λ‹€λ₯Έ 것은 같은 νŒŒν‹°μ…˜μ΄λ‹€.

## μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T (1 ≀ T ≀ 100)κ°€ μ£Όμ–΄μ§„λ‹€. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œ μ€„λ‘œ 이루어져 있고, μ •μˆ˜ N은 짝수이고, 2 < N ≀ 1,000,000을 λ§Œμ‘±ν•œλ‹€.

## 좜λ ₯

각각의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ κ³¨λ“œλ°”ν νŒŒν‹°μ…˜μ˜ 수λ₯Ό 좜λ ₯ν•œλ‹€.

μ‹œκ°„ μ œν•œ λ©”λͺ¨λ¦¬ μ œν•œ 제좜 μ •λ‹΅ 맞힌 μ‚¬λžŒ μ •λ‹΅ λΉ„μœ¨
0.5 초 512 MB 20084 7692 5885 36.537%

https://www.acmicpc.net/problem/17103

풀이

μ½”λ“œ

첫번째 μ‹œλ„

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

public class κ³¨λ“œλ°”ννŒŒν‹°μ…˜ {  


    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  

        boolean[] bool = new boolean[1000001];  
        Arrays.fill(bool, true); //bool의 기본값을 true둜 λ³€κ²½.  

        int t = Integer.parseInt(br.readLine());  

        for(int i=2; i<1000001; i++){  
            if(bool[i]){  
                for(int j=i+i; j<1000001; j=j+i){ //j=6 j=9 j=12 j=15 ... 반볡  
                    bool[j] = false; //falseλ©΄ μ†Œμˆ˜κ°€ μ•„λ‹ˆλ‹€.  
                }  
            }  
        }  

        for(int i=0; i<t; i++){  
            int n = Integer.parseInt(br.readLine());  
            int count = 0;  
            for(int k=2; k<=n; k++){  
                for(int j=k; j<=n; j++){  
                    if(j + k == n && bool[k] && bool[j]){  
                        count++;  
                    }  
                }  
            }  
            System.out.println(count);  
        }  
    }  
}

결과적으둜 μ‹€νŒ¨....γ… γ… 

3쀑 for문을 κ±Έμ–΄μ€€ 뢀뢄이 λ¬Έμ œκ°€ λ˜μ„œ μ‹œκ°„μ΄ˆκ³Όκ°€ 났닀.


for(int i=0; i<t; i++){  
            int n = Integer.parseInt(br.readLine());  
            int count = 0;  
            for(int j=2; j<=n/2; j++){
                if(bool[j] && bool[n-j]) count++;
            } 
            System.out.println(count);  
            }
        }  

μš”λ ‡κ²Œ μ²˜λ¦¬ν•΄μ„œ ν‘Έλ‹ˆκΉŒ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ˜€λ‹€..!

λ°˜μ‘ν˜•
profile

Vibe.ai

@hai02y

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!