프로그래밍/알고리즘

(백준) - 소수 구하기 (Python3) (해설없음)

레인보우떡 2022. 7. 10. 15:21

시간초과 코드. 크흠흠ㅎ

m, n = map(int, input().split())
for elem in range(m, n + 1):
    flag = False
    if elem == 1:
        continue
    for elem2 in range(2, (elem//2 + 1)):
        if flag:
            break
        if elem % elem2 == 0:
            flag = True
    if not flag:
        print(elem)

 

 

참고해서 맞은 코드

m, n = map(int, input().split())
for elem in range(m, n + 1):
    if elem == 1:
        continue
    for elem2 in range(2, int(elem**0.5)+1):
        if elem % elem2 == 0:
            break
    else:
        print(elem)

 

 

[첫번째 문제]

조건문 사이에 for문 적용이 가능하다는걸 제대로 인식하지 못했다

if에서 조건이 맞지 않으면 바로 else로 간다고 생각했던 것이 에러였다

그리하여 플래그 덕지덕지

 

[두번째 문제]

플래그 때문에 시간초과인 줄 알았으나, 제곱근이 아닌 절반 값(약수의 특성)을 기준으로 나누었던 것이 문제..

 

(elem // 2 +1) -> int(elem**0.5)+1

교환만 해준다면 첫번째 코드도 정답이긴하다..만

수학적 사고력이 부족하다는..것 흠흠

728x90