Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- remote repository 생성
- Restore
- regExr
- python
- 두수비교하기
- Push
- Baekjoon
- Reset
- ADD
- 함수
- 수정사항업데이트
- git commit
- 백준
- 정규식
- commit
- 1330
- 파이썬
- 1
- local repository 생성
- GitHub 설치
- git
- github
- amend
- STAGE
- boostcamp #aI tech #주간리뷰
- git push
- 15596
- git config global
Archives
- Today
- Total
Très bien
BAEKJOON 1978 - 소수 찾기 본문
BAEKJOON 1978 - 소수 찾기
◎ Problem Definition
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
◎ Implementation
1. Problem Type
- Implementation (Silver 4)
2. Problem Analysis
input : 1000 이하의 자연수 N개
output : N 개의 숫자 중에서 소수를 구한다.
- 입력값 중에서 max값을 찾아보자.
- max값까지 소수를 계산하자.
- 소수 list와 input list를 비교하여 겹치는 element의 개수를 구하자.
3. Solution_1 (☆초기 접근)
1. 데이터를 set 형태로 선언하여 주어진 list 중 최대값까지 발생하는 모든 소수의 집합을 구한다.
2. 1에서 계산한 소수 집합과 입력 집합 간 합집합을 구해 원소 개수를 출력한다.
▶ 완성 코드
# backjoon #1978 : Find Prime Number
# inputs
N = int(input())
data = set(map(int, input().split()))
# find prime numbers under N+1
num_list = []
n_max = max(data)
for n in range(2, n_max+1):
k = n
while k <= n_max:
k += n
num_list.append(k)
all = set(range(2,n_max+1))
nums = all - set(num_list)
# print(nums & data)
print(len(nums & data))
▶ 성능
논리가 간단하여 나쁘지 않은 접근이라고 생각한다. 하지만, 중간에 불필요한 연산들이 많아서 element 간 분포가 큰 데이터에는 부적합하다.
4. Solution_2 (☆공개된 다른 코드 참조)
▶ 완성 코드
##########################################
# TRIAL #2
# reference : https://www.acmicpc.net/source/18191610
##########################################
# input
N = int(input())
data = list(map(int, input().split()))
cnt = 0
for n in data:
flag = True
if n <= 1:
continue
for i in range(2, n):
if n % i == 0:
flag = False
break
if flag :
cnt += 1
print(cnt)
▶ 성능
두 번째는 주어진 element의 수가 적을수록 유리한 방법이다. 코드길이, 메모리, 시간 모두 두번째 접근이 더 효율적이다.
◎ Results
- print문 내부에
- 코딩 능
'Coding > Algorithm' 카테고리의 다른 글
Baekjoon 9020 - 골드바흐의 추측 (Python) (0) | 2022.02.21 |
---|---|
BAEKJOON 11653 - 소인수분해 (0) | 2022.02.20 |
SWEA 4112 - 이상한 피라미드 탐험 (0) | 2022.02.04 |
BAEKJOON 4673 - Self Number (0) | 2022.01.09 |
BAEKJOON 1330 - 두 수 비교하기 (0) | 2022.01.08 |
Comments