전체 글 337

백준 12789 - 도키도키 간식드리미

https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 문제의 조건을 놓쳐 틀린 코드 n=int(input()) arr=list(map(int,input().split())) stack=[] order=1 for x in arr: if x==order: order+=1 else: stack.append(x) for _ in range(len(stack)): if stack[-1]==min(stack): stack.pop() if stack: prin..

백준 17103 - 짝[소수약수배수]

https://www.acmicpc.net/problem/17103 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. www.acmicpc.net 배열의 i번째 소수만 참고해서 i와 N-i가 소수이면서, i와 N-i의 합이 N이 되는 경우의 개수를 찾으면 된다. 시간 초과난 코드 1 x=int(input()) for _ in range(x): n=int(input()) ch=[0]*(n+1) for i in range(2,int(n**0.5)+1): if ch[i]==0: for j in range(i*2,n+1,i): ch[j]=1 cnt=..

백준 1934 - 최소공배수[유클리드 호제법]

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 최소 공배수 = 두 수의 곱 나누기 최대 공약수 최대 공약수 구하는 법 [유클리드 호제법] n=int(input()) for _ in range(n): a,b=map(int,input().split()) tmp=a*b while b != 0: r = a % b a = b b = r print(a) # 최대공약수 즉, a,b는 한번의 연산마다 하나는 나머지로, 다른 하나는 다른 ..

백준 11659 -구간 합

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 시간 초과난 나의 코드 1 n,m=map(int,input().split()) arr=list(map(int,input().split())) for _ in range(m): a,b=map(int,input().split()) print(sum(arr[a-1:b])) 시간복잡도 O(n*M)으로 초과 (sum함수로 슬라이싱 연산시 O(N)의 시간 복잡도를 가진다. 시간 초과난..

백준 18870 - 좌표압출(정렬)

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 www.acmicpc.net 시간 초과난 코드 1 n=int(input()) arr=list(map(int,input().split())) arr2 = sorted(list(set(arr))) for i in range(n): for j in range(len(arr2)): if arr[i]==arr2[j]: print(j,end=' ') break 우선 정렬 sorted를..

백준 - 10989 - 정렬 3

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 메모리 초과된 잘못된 코드 메모리 초과 import sys n=int(input()) arr=[] for _ in range(n): arr.append(int(sys.stdin.readline())) arr.sort() for x in arr: print(x) append를 사용하면 메모리 재할당이 발생해 메모리소비가 크다. 그래서 체크리스트를 사용 체크리스트 import sys n=int(input()) ch=[0..

백준 2839 - 설탕 배달 [부르트포스]

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net n = int(input()) count = 0 while True: if n%5 == 0: count += n//5 print(count) break n -= 3 count +=1 if n < 0: print(-1) break 최저의 count를 만드는 5를 사용한뒤 안되면 차선인 3을 빼면서 탐색

백준 1436 - 영화감독숌[부르트포스]

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net n=int(input()) strrr='666' count=0 i=1 while True: if strrr in str(i): count+=1 if count==n: print(i) break i+=1 문자열과 in 을 사용해서 카운팅한다 !

백준 1018 - 체스판 채우기[부르트포스]

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 나의 코드 n,m=map(int,input().split()) arr=[list(map(str,input())) for _ in range(n)] arr1=[[0]*m for _ in range(n)] ch=[[0]*m for _ in range(n)] ch1=[[0]*m for _ in range(n)] for i in range(n): for j in range(m): arr1[i][j..

[DP] - 네트워크 선 자르기

네트워크 선 자르기 현수는 네트워크 선을 1m, 2m의 길이를 갖는 선으로 자르려고 합니다. 예를 들어 4m의 네트워크 선이 주어진다면 1) 1m+1m+1m+1m 2) 2m+1m+1m 3) 1m+2m+1m 4) 1m+1m+2m 5) 2m+2m 의 5가지 방법을 생각할 수 있습니다. (2)와 (3)과 (4)의 경우 왼쪽을 기준으로 자르는 위치가 다르면 다른 경우로 생각한다. 그렇다면 네트워크 선의 길이가 Nm라면 몇 가지의 자르는 방법을 생각할 수 있나요? ▣ 입력설명 첫째 줄은 네트워크 선의 총 길이인 자연수 N(3≤N≤45)이 주어집니다. ▣ 출력설명 첫 번째 줄에 부분증가수열의 최대 길이를 출력한다. ▣ 입력예제 1 7 ▣ 출력예제 1 21 나의 코드 (Bottom-Up) n=int(input()) ..