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
- 자바스크립트
- 프로그래머스
- 코드스테이츠
- html
- Til
- UX
- web
- 큐
- 카카오
- React
- vercel
- CSS
- REST_API
- javascript
- 생활코딩
- 백준
- 30daysdowoonchallenge
- 자료구조
- 해시테이블
- level1
- redux
- 회고
- superstarjypnation
- 스택
- mysemester
- 프로토타입
- useState
- Next.js
- UI
- 운영체제
Archives
- Today
- Total
데굴데굴
[파이썬] 2581번: 소수 본문
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
'단계별로 풀어보기'에서 이 바로 전 문제였던 1978번 문제에서 조금 더 발전한 문제이다. 여기서는 자연수 m과 n을 입력받은 후 m과 n 사이에 존재하는 소수의 합과 최소값을 출력해야 한다. 그래서 저번 문제에서 썼던 코드를 가져와 살짝 수정만 해줬다.
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)
이건 1978번 문제에서 썼던 코드 (구글링한 코드임...)
m = int(input())
n = int(input())
cnt = []
for num in range(m, n + 1):
error = 0
if num > 1:
for i in range(2, num):
if num % i == 0:
error += 1
if error == 0:
cnt.append(num)
if len(cnt) == 0:
print(-1)
else:
print(sum(cnt), min(cnt), sep='\n')
이건 이번 문제 코드. 시스템에서 m과 n을 엔터로 구분해 입력받기 때문에 input().split()을 쓰지 않고 그냥 명령문을 두 개 입력했는데 하나로 합치는 방법이 있는지는 아직 모르겠다. cnt를 리스트로 바꾸고 범위를 m부터 n까지로 정한 다음 소수에 해당하면 cnt 리스트에 하나씩 추가하는 방식으로 짰다. 그리고 마지막 if문에서 리스트의 길이가 0, 즉 소수가 하나도 없으면 -1을 출력하고 그렇지 않으면 소수들의 합과 최소값을 한 줄씩 출력하도록 작성했다.
'algorithm > 백준' 카테고리의 다른 글
[파이썬] 4948번: 베르트랑 공준 (0) | 2022.06.12 |
---|---|
[파이썬] 1929번: 소수 구하기 (0) | 2022.04.20 |
[파이썬] 1978번: 소수 찾기 (0) | 2022.04.04 |
[파이썬] 10250번: ACM 호텔 (0) | 2022.03.23 |
[파이썬] 1193번: 분수찾기 (0) | 2022.03.20 |
Comments