분류 전체보기 121

백준 > 1929 소수 구하기

범위 내의 소수를 구하는 가장 빠른 방법은 '에라토스테네스의 체'로 알려져 있다. 에라토스테네스의 체는 2부터 n의 제곱근까지 배수를 제거하는 방식이다. 풀이를 찾아보다가 매우 신선한 코드를 발견해 기록하고자 한다. import math n, m = map(int, input().split()) for i in range(n, m + 1): if i == 1: continue for j in range(2, int(math.sqrt(i)) + 1): if i % j == 0: break else: print(i) 나는 if else문 사이에 for문을 저렇게 넣을 수 있는지 처음 알았다; 보고 코드 되게 똑똑하게 짰다고 생각했다. 코드 참고: https://velog.io/@yj_lee/%EB%B0%B1..

백준 > 10989 수 정렬하기 3

브론즈 1이라 만만하게 보고 덤볐다가 호되게 당한.. 문제였다. 이 문제의 채점 현황을 보면 메모리 초과, 시간 초과, 컴파일 에러 등등 다양한 에러를 볼 수 있다. 나 역시 골고루 수집한 문제.. 우선, 파이썬으로 저 문제를 푸는 것 자체는 매우 간단하다. a = int(input()) arr = [] for i in range(a): arr.append(int(input())) arr.sort() for i in range(a): print(arr[i]) 하지만 이렇게 풀면 메모리 초과가 발생한다. 우리는 이 문제의 조건을 잘 봐야 하는데, n은 1 ~ 10,000,000개의 10,000보다 작거나 같은 자연수를 입력받게 된다. 입력받는 자연수의 범위가 좁기 때문에 크기가 10000인 리스트를 하나 ..

백준 > 1764 듣보잡

#틀린 코드1 a, b = map(int, input().split()) arr = [] brr = [] test = [] for i in range(a): arr.append(input()) for i in range(b): brr.append(input()) for i in range(len(arr)): if arr[i] in brr: test.append(arr[i]) print(len(test)) test.sort() for i in range(len(test)): print(test[i]) 최초로 짠 코드는 위와 같다. 무려 for문이 4개나 사용되었고, 단순하게 a와 b의 값을 입력받아 그 수만큼 문자열을 입력받고, in을 사용해 존재할 경우 test 리스트에 추가하는 방식이다. 근데 이 코드..

백준 > 2750 수 정렬하기

a = int(input()) arr = [] for i in range(a): arr.append(int(input())) arr.sort() for i in range(a): print(arr[i]) 원래 이 문제 말고, 다른 정렬 문제를 풀었는데 시간 초과와 메모리 초과가 발생했다.. 이에 분노한 나는 정렬의 고수가 되겠다고 다짐하며 당분간 정렬 문제를 풀 것이다.. 그나저나 저번에 하루에 5문제인가 푼 이후로 백준이랑 권태기가 왔다. 초록칸을 위해 풀게 되는 느낌..