AngelPlayer`s Diary

링크

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

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 

 

 

문제 해석

최솟값 M, 최댓값 N이 주어지고, M이상 N이하의 소수를 구하여 소수의 합과 소수의 최솟값을 구한다.

이때 소수가 하나도 없으면 -1을 출력한다. 

 

 

 

코드

 

 

 

코드 해석

# input

M과 N을 각각 받는다.

 

# process

이중 for문을 통해 비교할 수(i)와 2부터 자기 자신까지 반복할 수(j)를 구한다.

j와 i가 같다면 소수이므로 decimal에 추가해주고, 그렇지 않다면 i를 j에 나눈 나머지를 비교하여 나누어 떨어지면 소수가 아니게 되므로 break를 통해 빠져 나온다. 

 

# output

decimal이 false인 경우(아무 것도 없는 경우) -1을 출력하고, 그렇지 않으면 모든 리스트의 요소를 더한 값과 리스트의 0번째(가장 작은 값) 요소를 출력한다.

 

 

 

발생한 문제 & 해결 방안

- 리스트가 비어있는지 확인하는 방법

1. if not list:

리스트, 튜플, 딕셔너리 등 파이썬의 시퀀스들은 비어있는 경우 false를 반환한다.

 

2. if len(list) ==0:

아무 데이터가 없기 때문에 len의 값으로 0이 반환된다.

 

 

- 리스트의 요소를 모두 더하는 방법

sum(list)

리스트의 요소가 모두 더해진 값이 반환된다.

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다..!

공유하기

facebook twitter kakaoTalk kakaostory naver band