일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드주석
- 안드로이드
- XML주석
- 디피
- 영어회화
- 이진탐색
- English
- 오픽공부법
- 다이나믹프로그래밍
- 메모이제이션
- 바텀업
- 오픽노잼
- XML
- 오픽점수잘받는방법
- dynamicProgramming
- ㅂ
- 영어말하기
- dp
- 오픽가격
- 탑다운
- 오픽노잼공부방법
- 이진탐색 #나무 자르기
- fibo
- topdown
- 오픽
- stack 스택
- opic
- 피보나치수열
- 주석
목록PS/BOJ (143)
RUBY
출처:: https://www.acmicpc.net/problem/2512 분류:: 이진탐색 1. 문제 이해 및 해결과정 2. 풀이방법 1. python 이진탐색 #예산 #https://www.acmicpc.net/problem/2512 import sys sys.stdin = open("input.txt","r") n=int(input()) a=list(map(int,input().split())) m=int(input()) left=1 right=max(a) while leftmid: sum+=mid else: sum+=x if sum>m: right=mid-1 else: result=mid left=mid+1 print(result) 3. 오답원인 4. 알게된 점
출처:: www.acmicpc.net/problem/1920 분류:: 이진탐색 1. 문제 이해 및 해결과정 2. 풀이방법 1. python #수 찾기 #https://www.acmicpc.net/problem/1920 import sys sys.stdin = open("input.txt","r") n=int(input()) a=list(map(int,input().split())) m=int(input()) find=list(map(int,input().split())) a.sort() def binary_search(x): left=0 right=n-1 while leftx: right=mid-1 else: left=mid+1 return 0 for x in find: sol=binary_search(..

출처:: www.acmicpc.net/problem/1516 분류:: 위상정렬, dp 1. 문제 이해 및 해결과정 2. 풀이방법 1. 위상정렬 #게임 개발 #https://www.acmicpc.net/problem/1516 import sys from collections import deque import copy sys.stdin = open("input.txt","r") n=int(input()) graph=[[] for _ in range(n+1)] indegree=[0]*(n+1) time=[0]*(n+1) q=deque() for i in range(1,n+1): data=list(map(int,input().split())) time[i]=data[0] for pre in data[1:-1]..
출처:: www.acmicpc.net/problem/2252 분류:: 위상정렬 1. 문제 이해 및 해결과정 1->3 2 -↑ - 사이클이 발생하지 않고 순서가 정해져 있는 작업을 수행해야 하므로 위상 정렬을 이용하면 된다. 2. 풀이방법 #줄 세우기 #https://www.acmicpc.net/problem/2252 import sys from collections import deque sys.stdin = open("input.txt","r") n,m=map(int,input().split()) #노드개수, 간선연결 graph=[[] for _ in range(n+1)] indegree=[0]*(n+1) #진입차수 q=deque() result=[] for _ in range(m): a,b=map(i..
출처:: www.acmicpc.net/problem/15685 분류:: 시뮬레이션 1. 문제 이해 및 해결과정 - 방향 0,1,2,3 = → ↑ ← ↓ - 0세대 -> 0 - 1세대 -> 0 1 - 2세대 -> 0 1 2 1 - 3세대 -> 0 1 2 1 / 2 3 2 1 - 0 1 2 1 을 거꾸로 하면 1 2 1 0 이 된다. +1을 하면 2 3 2 1 이 된다. 2. 풀이방법 1. python #드래곤 커브 #https://www.acmicpc.net/problem/15685 import sys sys.stdin = open("input.txt","r") board=[[0]*101 for _ in range(101)] dh=[0,-1,0,1] # -> 위

출처:: https://www.acmicpc.net/problem/13458 1. 문제 이해 및 해결과정 1. 각 시험장의 응시자 수를 배열에 넣음 2. 각 응시자 수를 총 감독 인원 수로 나눠서 CNT+=몫 3. 응시자 수에서 총감독이 감독한 인원 뺌 4. 응시자 수에서 총 감독 인원수 뺀 값에서 부감독 인원수로 나눈 몫의 올림을 더함 CNT+= 몫의 올림 *주의할 점 -시험장 수 * 각 시험장의 최대 학생수 = 10^ 12 ->int형 범위 넘음 => total은 long long %lld 써야함 2. 풀이방법 1. ceil 올림 함수 이용 #if 01 //시험 감독 //https://www.acmicpc.net/problem/13458 #include #include #include using na..

출처:: www.acmicpc.net/problem/17779 분류:: 구현, 시뮬레이션 1. 문제 이해 및 해결과정 1. x,y,d1,d1의 경우의 수 구하기 => 20*20*20*20=16000가지 , 한 케이스마다 인구수의 합 10830*20*20 2. 5로 경계선 만들어 주기 3. 구역별로 계산하기 (5를 만나면 멈춘다) 2. 풀이방법 1. python #게리맨더링2 #https://www.acmicpc.net/problem/17779 import sys sys.stdin = open("input.txt","r") n=int(input()) board=[[0] * (n + 1)]+[[0]+list(map(int,input().split())) for _ in range(n)] total=0 res..

출처:: https://www.acmicpc.net/problem/15683 분류:: BRUTEFORCE DFS 1. 문제 이해 및 해결과정 *문제이해 - 최대한 0을 적게 만들어야한다. = 사각지대 최소지대 - 1번 : 4가지 / 2번 : 2가지 / 3번: 4가지 / 4번: 4가지 / 5번 : 1가지 * 시간복잡도 : CCTV 의 최대 개수는 8개 4^8 * 64 (최대 블럭) => 약 400만 - 입력된 CCTV 방향의 조합을 DFS로 구현 하면서 사각지대의 최소개수를 찾음 -DFS() 종료조건 => cctv의 개수 반복문을 돌면서 1. map backup 2. map update 3. map 복원 *풀이방법 -CCTV개수 만큼 돌면서 -DFS에서 dir을 [4,2,4,4,1] 가지 수 만큼 돔 -u..