bj1978 소수 찾기

coh·2022년 5월 21일
0

백준

목록 보기
4/27

소수찾기 문제!

음.. 우선 input을 받고
해당 input 을 for loop로 인자를 하나씩 전달하며 소수를 판별해야겠다는 생각을 했다!
예외처리로 소수가 아닌 case인 1에 대해서 처리를 해야겠다는 생각을 했다.
그리고 가장 중요한 논리 부분으로 i squared 가 해당 값보다 작을 때까지 loop를 돌리면서 그 소인수로 나누면서 나누어 떨어지는 수가 있는지 검사했다! 이렇게 해서 내 알고리즘의 big O notation은 (nlogn)이다.

갯수를 반환하기 위해 list에 append하고 length를 재는 것과
static variable을 이용하는 두 가지 방법을 생각했는데 static variable을 이용해서 해결했다!

근데 이게 실버라고 해서 깜짝 놀람 ㅋㅋ

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


def find_prime(_card):
    i = 2
    if _card <= 1:
        return 0
    while i*i <= _card:
        if _card % i == 0:
            return 0
        i += 1
    find_prime.count += 1
    return 0


find_prime.count = 0
for i in range(n):
    find_prime(card[i])
print(find_prime.count)

만약 input data 중에 2, 3이 있더라도 2, 3은 자동으로 소수이기 때문에 바로 static variable을 증가시키도록 설계했다!

profile
Written by coh

0개의 댓글