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 |
Tags
- 프로토타입
- CSS
- 생활코딩
- web
- mysemester
- 스택
- UX
- 자바스크립트
- superstarjypnation
- 회고
- React
- Til
- 운영체제
- 프로그래머스
- 큐
- redux
- html
- level1
- UI
- 백준
- 카카오
- vercel
- REST_API
- 해시테이블
- 코드스테이츠
- useState
- 자료구조
- 30daysdowoonchallenge
- javascript
- Next.js
Archives
- Today
- Total
데굴데굴
[파이썬] 1978번: 소수 찾기 본문
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
n = int(input())
numbers = map(int, input().split())
cnt = 0
for num in numbers:
error = 0 # for문을 돌 때마다 error가 초기화되도록.
if num > 1: # 1은 소수가 아니니까 제외
for i in range(2, num):
if num % i == 0:
error += 1
if error == 0:
cnt += 1
print(cnt)
cnt를 만들어서 소수일 때마다 1씩 더하는 부분은 구상했지만 소수를 판별하는 조건을 어떻게 구현하는지 감이 안 와서 결국 구글링했음ㅜㅜ
참고 링크는 여기: 백준 1978번 [파이썬] 소수 찾기 (tistory.com)
그냥 넘어가려다가 직접 설명해보는 연습을 해두는 게 좋을 것 같아서 내 방식대로 설명해보기!
우선 1은 소수가 아니니 제외해야 한다. 따라서 입력받은 수가 1보다 클 때를 조건으로 잡는다. 그 후 2부터 (해당하는 수-1) 까지 하나하나 나눠보는 반복문을 입력한다. 만약 거기서 나눠떨어진다면 error 변수에 1을 더한다. 나눠떨어지지 않은 채 error 변수의 값이 0인 채로 반복문이 끝난다면 해당 수는 소수이므로 cnt에 1을 더해준다. 이제 두 번째 반복문을 돌 때 error는 다시 초기화되고 같은 과정을 반복한다.
'algorithm > 백준' 카테고리의 다른 글
[파이썬] 1929번: 소수 구하기 (0) | 2022.04.20 |
---|---|
[파이썬] 2581번: 소수 (0) | 2022.04.07 |
[파이썬] 10250번: ACM 호텔 (0) | 2022.03.23 |
[파이썬] 1193번: 분수찾기 (0) | 2022.03.20 |
[파이썬] 1316번: 그룹 단어 체커 (0) | 2022.03.19 |
Comments