[알고리즘] 백준 1978 (파이썬 풀이)

    728x90

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

     

    1978번: 소수 찾기

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

    www.acmicpc.net

    문제

    주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

    입력

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

    출력

    주어진 수들 중 소수의 개수를 출력한다.

     

    해결코드

    n = int(input())
    m = list(map(int, input().split()))
    cnt = 0
    for i in m:
        sosu = True
        if(i>1):
            for j in range(2,i):
                if(i%j==0):
                    sosu = False
            if(sosu==True):
                cnt += 1
    print(cnt)

    문제풀이

    저번에도 풀었던 소수 구하는 문제이다.

    일단 n에 입력값을 받고 m에는 n개만큼 수를 받는데 리스트 형식으로 넣어준다.

    후에 출력할 cnt값은 0으로 선언해준다.

    m의 범위로 for문을 돌리는데 sosu라는 boolean 변수를 일단 True로 설정해준다.

    1은 소수에 포함이 안되므로 조건문을 if(i>1)로 하여 진행한다.

    i를 j로 나눴을때 나머지가 0이라면(나누어떨어진다면) 소수가 아니므로

    sosu를 False로 바꾸어준다.

    두 번째 반복문을 빠져나왔을때 sosu가 True라면 cnt값을 +1해준다.

    이렇게 리스트 m을 다 돌았을때의 cnt값을 출력해준다.

    728x90

    댓글