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

2023. 5. 26. 19:11알고리즘/백준


풀이 및 회고

 

팀원들과 함께 페어프로그래밍을 진행했던 문제이다. 나는 count 를 증가시키는 방식을 생각했는데 다른분들 같은 경우는 count 를 빼 주는 방식을 생각하셨다.

문제를 풀면서 list 와 map 으로 만들었을 때와 map 만으로 만드는 방식 두가지를 알게 되었는데 우리가 입력 받을때 굳이 list 를 사용해 받을 필요가 있는가 였다. list 를 사용 안하더라도 map 만으로도 충분히 문제를 구현할 수 있었고 우리는 len() 을 사용해 값을 구하기 때문에 사용한걸로 결론이 났다. 

또 range(2, 2) 에 대해서 알게되었는데 우리가 2를 넣어도 중첩된 반복문에 들어가지 않는것 같아서 시작된 의문이었다.

결과적으로 range(2, 2) 두 인자가 같은 수일때는 루프에 들어가지 않는다. 

n과 arr로 입력받고 count 변수에 arr의 길이를 저장한다.

반복하며 1인경우 소수이므로 count 를 빼주고, 두번째 반복문 안에서는 소수가 아닌것을 판별해 값을 빼준다.

# 소수 찾기

n = int(input())

arr = list(map(int,input().split()))

count = len(arr)
for i in arr:
    if i == 1:
        count -= 1
    for j in range(2,i):
        if i % j == 0:
            count -= 1
            break

print(count)


# range(2, 2) 면 루프는 0회

# arr = list(map(int,input().split())) 인 경우 len 을 사용할게 아니라면 
# arr = map(int,input().split()) 이렇게 사용할수 있다 이렇게 사용할경우 map 객체 가된다.


'''
[1, 3, 5, 7]
1
count = 4 
i =3 j = 2 
3 % 2 == 0 False
i = 3 j = 3
3 % 3 == 0 True
count -= 1
count = 3

i = 4 j = 2
4 % 2 == 0 True
count -= 1
count = 2
4 % 3 == 0 False
4 % 4 == 0 True
count -= 1
count = 1

i = 5 j = 2
5 % 2 == 0 False
5 % 3 == 0 False
5 % 4 == 0 False
5 % 5 == 0 True
count



'''

간단해보였지만 생각할게 많았고 배울게 많았던 문제였습니다.