일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 주석
- 다이나믹프로그래밍
- English
- 오픽노잼
- 디피
- 안드로이드
- 안드로이드주석
- 오픽가격
- XML주석
- 오픽
- dynamicProgramming
- stack 스택
- 오픽공부법
- XML
- ㅂ
- fibo
- 바텀업
- 피보나치수열
- 메모이제이션
- 영어말하기
- 이진탐색 #나무 자르기
- 이진탐색
- 영어회화
- 오픽점수잘받는방법
- 오픽노잼공부방법
- dp
- 탑다운
- opic
- topdown
목록PS/BOJ (143)
RUBY
출처:: www.acmicpc.net/problem/2751 분류:: 정렬 1. 문제 이해 및 해결과정 2. 풀이방법 1. [python] #수 정렬하기 2 #https://www.acmicpc.net/problem/2751 import sys sys.stdin = open("input.txt","r") n=int(input()) arr=[int(input()) for _ in range(n) ] arr.sort() for x in arr: print(x) 3. 오답원인 4. 알게된 점
출처:: www.acmicpc.net/problem/13398 분류:: dp 1. 문제 이해 및 해결과정 1)누적합 이용 -> 실패 - 원래의 수 + 한 개 제거한 경우 100000+1 - n+1개의 리스트를 만들어 누적합 배열을 구한다. - 누적합의 최대값과 최소값의 차를 뺀 것중 최대로 나오는 값을 구함 - 반례 1 -3 2) dp - dp[i] i까지 최대 연속합 - dp[0][i] : 왼쪽부터 i까지 최대 연속 합 - dp[1][i] : 오른쪽부터 i까지 최대 연속 합 => dp[0][i-1]+dp[1][i+1] =>i 번째 수를 제외한 최대 연속합 2. 풀이방법 1. dp #연속합 2 #https://www.acmicpc.net/problem/13398 import sys sys.stdin = ..
출처:: www.acmicpc.net/problem/11057 분류:: dp 1. 문제 이해 및 해결과정 dp[i] : 길이가 i인 오르막 수의 개수 끝이 0일경우, 0 1일경우, 앞에 올 수 있는 것 0 1 2일 경우, 앞에 올수 있는 것 0 1 2 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 1 2 1 2 3 4 5 6 7 8 9 10 dp[2][3]=dp[1][0]+dp[1][1]+dp[1][2] =>2자리 이면서 3으로 끝나는 것 3 1 3 6 10 15 21 28 36 45 55 dp[i][j] = dp[i-1][0]+dp[i-1][1]+ .... + dp[i-1][j] => dp[i][j]=dp[i-1][j]+dp[i][j-1] 2. 풀이방법 1. dp #오르막 수 ..
출처:: www.acmicpc.net/problem/1309 분류:: 1. 문제 이해 및 해결과정 - 사자를 배치하는 경우는 1) 배치 안하는 경우 2) 왼쪽에 배치하는 경우 3) 오른쪽에 배치하는 경우가 있다. ex) n=1 이라면 1번,2번, 3번경우를 모두 합해서 3가지 경우 - n-1 줄에서 사자가 배치가 안되어 있다면, 1,2,3번 경우가 가능하다 - n-1 줄에서 사자가 왼쪽에 배치되어 있다면, 1번 3번 경우가 가능하다. - n-1 줄에서 사자가 오른쪽에 배치되어 있다면, 1번 2번 경우가 가능하다. dp[i][j]=i는 우리의 크기 j=0 미배치 j=1 왼쪽배치 j=2 오른쪽 배치를 의미한다 dp[i][0]=dp[i-1][0]+dp[i-1][1]+dp[i-1][2] dp[i][1]=dp[i..
출처:: https://www.acmicpc.net/problem/17087 분류:: gcd 1. 문제 이해 및 해결과정 - 문제가 이해가 안되서.. 오래걸렸다.. - ex1) 1 7 11 동생이 있고, 3이 현재 위치라면 2씩 이동하면 모든 동생을 찾을 수 있다. - ex2) 33 105 57 동생이 있고, 81에서 2번이동하면, -24-24 = 33, 81에서 1번이동하면 105, 81에서 24씩 한번이동하면 57 - ex3) 1000000000에 동생이 있고 1에서 999999999만큼 이동하면 1000000000 이 된다 - 즉, 수빈이의 위치에서 각 동생까지의 거리 들 중 최대공약수를 찾으면 된다. 2. 풀이방법 1. 유클리드 #숨바꼭질 6 #https://www.acmicpc.net/probl..
출처:: https://www.acmicpc.net/problem/6603 분류:: 브루트포스, 순열 1. 문제 이해 및 해결과정 2. 풀이방법 1. 순열 #로또 #https://www.acmicpc.net/problem/6603 import sys from itertools import combinations sys.stdin = open("input.txt","r") input=sys.stdin.readline while True: data=list(map(int,input().split())) if data[0]==0: break selected=list(combinations(data[1:],6)) for i in range(len(selected)): print(' '.join(map(str,s..
출처:: www.acmicpc.net/problem/10974 분류:: dfs 1. 문제 이해 및 해결과정 1) dfs , 결과배열, 체크배열 따로 두는 경우 2) dfs, 결과배열에 숫자까지 넣어서 3) permutation 라이브러리 이용 - 속도가 가장 빠르다 2. 풀이방법 1) dfs , 결과배열, 체크배열 따로 두는 경우 #모든 순열 #https://www.acmicpc.net/problem/10974 import sys sys.stdin = open("input.txt","r") n=int(input()) ch=[False]*(n+1) res=[0]*(n) def dfs(d): if d==n: print(' '.join(map(str,res))) else: for i in range(1,n+1..
출처:: www.acmicpc.net/problem/2225 분류:: dp 1. 문제 이해 및 해결과정 - 0 ~n까지 정수 k개 더해서 합이 n이 되는 경우 ex) 6 2 => 0 1 2 3 4 5 6 0 6 ,1 5,2 4,3 3 , 6 0, 5 1 ,4 2 dp[k][n] =k개를 더해서 합이 n인 경우 dp 0 1 2 3 4 5 0 1 0 0 0 0 0 //배열만들기 위해 1 1 1 1 1 1 1 ex) dp[1][4] = 4를 1개의 수로 만들 수 있는 경우의 수 4 2 1 2 3 4 5 6 ex) dp[2][2] = 2를 2개로 만들 수 있는 경우의 수 2+0. 0+2, 1+1 3 1 3 6 10 15 21 ex) dp[3][1] = 1을 3개로 만들 수 있는 경우의 수 1+0+0 ,0+1+0..