코딩 테스트(JAVA)/백준

[백준 1978번] 소수 찾기

Lea Hwang 2022. 4. 23. 22:59

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

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력 1 복사

4
1 3 5 7

예제 출력 1 복사

3

 

문제 분석

1. n을 입력받습니다.

2. n을 돌면서 숫자(num)를 받습니다.

3. 1 제외, 2 ~ num-1로 num을 나누어 0이 되면 소수가 아닙니다, 소수만 cnt++합니다.

4. cnt 출력합니다. 

 

소수(prime)란?
소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수입니다.

 

이를 바탕으로 코드 구현을 해보겠습니다. 

수를 입력받을 때 어떤 형태로 받을지 고민 후 접근합니다 : 하나씩 받을지 아니면 배열에 넣으면서 만들지 고민

 

성공 코드


import java.util.*;

public class Main {
	
	public boolean prime(int num) {
		if(num == 1) return false;
		
		for(int i=2; i<num; i++) {
			if(num % i == 0) return false;
		}
		return true;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		int num;
		int cnt = 0;
		for(int i=0; i<n; i++) {
			num = kb.nextInt();
            // num을 메서드로 넘겨서 리턴값이 true면 cnt++
			if(T.prime(num)) cnt++;
		}
		System.out.println(cnt);
	}
}

 


 

코테에 나오는 알고리즘 유형을 풀다가, 기본이 부족한 것 같아서 기본 문제부터 풀고 있는데 왜,,,, 

푸는 시간은 비슷한 걸까요?... 😂