[알고리즘]/BOJ

[백준/Python] 1978: 소수찾기

개발새발주발 2023. 2. 27. 19:32
728x90

1. 문제

 

1978번: 소수 찾기

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

www.acmicpc.net

 

2. 해결 

- 소수의 조건을 생각해보았다. 소수는 약수가 2개인 수이다. 소수의 약수는 1과 자기자신인 수인데.. 

- 주어진 수(num)이 소수임을 확인하기 위해서는 num을 2부터 num-1까지 하나하나 나누어보면서 나머지가 0이 아님을 보이면 되겠다! 

- for문 if문을 적절히 사용하고 

- cnt를 통해 탐색하고 있는 수(num)이 소수일 때 +1씩 해주면 되겠다 ! 

 

3. 코드 

n = int(input())
nums = list(map(int,input().split()))

def isPrime(num):
    if num < 2:
        return False
    for i in range(2,num):
        if (num % i == 0):
            return False
    return True

cnt = 0
for num in nums:
    if isPrime(num) == True:
        cnt+=1
    else:
        continue

print(cnt)

 

4. 오답

n = int(input())
nums = list(map(int,input().split()))

for num in nums:
    if num < 2:
        nums.remove(num)
    else:
        for i in range(2,num):
            if num%i ==0:
                nums.remove(num)


print(len(nums))

처음 짜보았던 코드이다. 

코드는 짧지만 .. 런타임 에러로 틀려버리고 찾은 다른 대안이 바로 함수 ! 

함수를 사용하니 런타임에러가 뜨지 않았다 ~ 

시간을 줄이는 데에도 함수가 사용된다는 것을 꼭 기억하기