본문 바로가기

전체 글

(19)
[python] 백준 2563번: 색종이 이번 문제는 어려운 문제는 아니었다.......... 화가 좀 났을뿐............................ 일단 이 문제를 풀기 위해서 세 가지의 방법을 생각했다. 1. 색종이를 한장씩 붙이고 그럴때 마다 겹친 것을 빼주는 방법 2. 색종이가 있는 평면의 끝에서 끝까지의 공간에서 빈 공간의 크기를 뚫어내는 방법 3. 전체 100*100을 2차원 배열로 주고, 색종이가 있는 칸을 색칠하는 방법 나는 세번째 방법을 선택했다. 첫번째 방법은 겹치는 모양이 매번 달라지고 두개가 겹쳐있는 그 사이에 새로운 색종이가 올라오면 상당히 힘들 것 같았고, 두번째 방법은 생각보다 괜찮은 방법이라고 생각했지만 세번째 방법이 좀 더 쉽고 재미있어 보여서 진행했다. 중간중간 아.. 시간 초과될거같다는 생각을 매우 ..
[python] 백준 2581번: 소수 이번 문제는 소수에 관련한 문제이다. 소수를 찾는 과정에서 반복문을 돌릴 때 범위를 전체로 하면 코드가 너무 많이 돌아야해서 시간 초과가 난다. 이를 해결하기 위해서는 일단 판단 해야하는 숫자들의 범위를 줄여야한다. "어떤 수의 약수는 꼭 짝을 이루어서 나오게 된다." 이것이 바로 문제 해결의 솔루션이라고 생각한다. 짝을 이루어서 나오니, 판단 해야할 범위는 어떤 수의 제곱근 까지이다. 또한 구하는 과정에서 "에라토스테네스의 체"를 사용해야한다. 에라토스테네스의 체는 어떤 범위 내에서 아닌 숫자들을 다 제거해 나가는 방법이다. 체에 거르는 것과 같다고 하여 이름이 그렇게 붙여진 것 같다. 위 두 가지를 생각하면서 코드를 짜 보았다. from math import sqrt N=int(input()) M=i..
[python] 백준 2775번: 부녀회장이 될테야 다이나믹 프로그래밍이라는 알고리즘을 사용하는 문제이다. "다이나믹 프로그래밍"이란, 동적 프로그래밍이라고 하는데 어떤 목표까지를 도달하기 위해 이전의 결과 값들이 필요한 프로그램을 말한다. 뭐 어떻게 보면 그냥 처음부터 끝까지의 값들이 다 필요하니깐 다 저장해야한다는 것이다. import sys T=int(sys.stdin.readline()) for _ in range(T): k=int(sys.stdin.readline()) #k층 n=int(sys.stdin.readline()) #n호 l1=[i for i in range(1, n+1)] for j in range(k): l2=[] for i in range(1, n+1): l2.append(sum(l1[:i])) l1=l2 print(l1[n-1]..