백준 51

백준 > 7795 먹을 것인가 먹힐 것인가

어이없는 이유로 하루 동안 삽질했다... start + end에 괄호를 사용하지 않았으며,, bin 함수의 인자로 brr을 주고서 arr로 작성했다... 그래도 lower bound 알고리즘에 대해 알게 되었다. 그리고 파이썬 라이브러리로 이미 제공한다는 사실도..! from sys import stdin q = int(stdin.readline()) def bin(brr, k): #이진 탐색 start = 0 end = len(brr) while start < end: mid = (start + end) // 2 #mid = 2 arr[mid] = 3 if k

백준 > 2805 나무 자르기

매개변수 탐색을 이용해서 푸는 문제이다 이분 탐색이랑 비슷한듯 미묘하게 다른 느낌이다. 코드도 이분 탐색의 코드랑 비슷한 것 같다 최적화 문제를 결정 문제로 푸는 방법이라고 한다. 💡최적화 문제 : 어떤 알고리즘의 최적의 솔루션을 찾는 법 💡결정 문제 : 답이 이미 결정되어 있다고 보고 문제를 푸는 법 n, m = map(int, input().split()) arr = list(map(int, input().split())) arr.sort() def parametric(arr, m): start = 0 end = arr[-1] while end >= start: #조건 수정 mid = (start + end) // 2 sum = 0 for i in range(len(arr)): if arr[i] > ..

백준 > 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 리스트에 추가하는 방식이다. 근데 이 코드..