일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드주석
- 바텀업
- 이진탐색
- 오픽점수잘받는방법
- 오픽노잼
- 피보나치수열
- 안드로이드
- topdown
- ㅂ
- 오픽
- 오픽가격
- dynamicProgramming
- opic
- 메모이제이션
- stack 스택
- dp
- 디피
- 탑다운
- 주석
- 오픽공부법
- 오픽노잼공부방법
- 이진탐색 #나무 자르기
- XML주석
- 영어회화
- 다이나믹프로그래밍
- XML
- English
- fibo
- 영어말하기
목록PS/This (56)
RUBY
출처:: 분류:: DFS 1. 문제 이해 및 해결과정 2. 풀이방법 1. DFS #음료수 얼려 먹기 # import sys sys.stdin = open("input.txt","r") n,m=map(int,input().split()) dh=[-1,1,0,0] dw=[0,0,-1,1] visited=[[0]*m for _ in range(n)] board = [list(map(int, input())) for _ in range(n)] def DFS(h,w): visited[h][w] = 1 for i in range(4): nh=h+dh[i] nw=w+dw[i] if nh>=n or nh=m or nw=n or h=m or w
출처:: 분류:: 시뮬레이션 1. 문제 이해 및 해결과정 2. 풀이방법 1. 시뮬레이션 #게임 개발 # import sys sys.stdin = open("input.txt","r") sizeh,sizew=map(int,input().split()) h,w,dir=map(int,input().split()) visited=[[0]*sizew for _ in range(sizeh)] visited[h][w]=1 #출발 좌표 방문 처리 dh=[-1,0,1,0] dw=[0,1,0,-1] board=[] for i in range(sizeh): board.append(list(map(int,input().split()))) def turn_left(): global dir dir=(dir+3)%4 cnt=1 t..
출처:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. 방향을 dh,dw나누어서 풀 때 #왕실의 나이트 # import sys sys.stdin = open("input.txt","r") start=input() sh=int(ord(start[0])-96) sw=int(start[1]) dh=[-2,-1,1,2,2,1,-1,-2] dw=[1,2,2,1,-1,-2,-2,-1] cnt=0 for i in range(8): nh=sh+dh[i] nw=sw+dw[i] if nh8: continue else: cnt+=1 print(cnt) 2. 방향을 한 리스트에 담은 경우 #왕실의 나이트 # import sys sys.stdin = open("input.txt","r") start=input() sh=int..
출처:: 분류::완전탐색 1. 문제 이해 및 해결과정 - 86400가지만 존재하므로 100000개도 안되서 완전탐색 가능 2. 풀이방법 1. 완전탐색 #시각 # import sys sys.stdin = open("input.txt","r") n=int(input()) cnt=0 for h in range(n+1): for m in range(60): for s in range(60): if '3' in str(h)+str(m)+str(s): cnt+=1 print(cnt) 3. 오답원인 4. 알게된 점 - 완전탐색 알고리즘은 가능한 경우의 수를 모두 검사해 보는 탐색방법 - 일반적으로 비효율적인 시간 복잡도를 가지고 있어 데이터 개수가 큰 경우에 정상적으로 동작하지 않을 수 있음 - 전체 데이터 개수가 ..
출처:: 분류:: 시뮬레이션 1. 문제 이해 및 해결과정 - 연산횟수는 이동횟수에 비례, O(n) 2. 풀이방법 1. 시뮬레이션: 일련의 명령에 따라서 개체를 차례대로 이동시킴 #상하좌우 # import sys sys.stdin = open("input.txt","r") n=int(input()) plans=input().split() dh=[-1,1,0,0] dw=[0,0,-1,1] dir=['U','D','L','R'] h,w=1,1 for plan in plans: for i in range(len(dir)): if plan==dir[i]: nh=h+dh[i] nw=w+dw[i] if nhn: continue h,w=nh,nw print(h,w) 3. 오답원인 4. 알게된 점 - 완전탐색: 모든 경..
출처:: 2018 E기업 알고리즘 대회 분류:: 그리디 1. 문제 이해 및 해결과정 1. DFS 풀이 - DFS N-1로 연산 하는 경우 N/K로 연산하는 경우 로 두가지 가지 중 최소값을 생각했다 - 단 , 이 방법은 n이 100000이라면 overflow가 난다. 2. 그리디 풀이 - k로 최대한 많이 나누는 것이 최적의 해를 보장하는 것 2. 풀이방법 1. DFS(n이 작을 때만 가능한 풀이) #1이 될 때까지 # import sys sys.stdin = open("input.txt","r") n,k=map(int,input().split()) sys.setrecursionlimit(10**6) candi=[] def DFS(x,cnt): if x==1: candi.append(cnt) return..
출처:: 2019 국가 교육기관 코딩 테스크 분류:: 그리디 1. 문제 이해 및 해결과정 - 행마다 가장작은 수 뽑고 그 중에서 제일 큰 수 찾기 - 입력1 3 3 3 1 2 4 1 4 2 2 2 - 출력1 2 - 입력2 2 4 7 3 1 8 3 3 3 4 - 출력2 3 2. 풀이방법 1. 2중 for문 #숫자 카드 게임 # import sys sys.stdin = open("input.txt","r") n,m=map(int,input().split()) li=[map(int,input().split()) for _ in range(n)] candi=[] for x in li: small = 2147000000 for k in x: small=min(k,small) candi.append(small) p..
출처:: 2019년 국가 교육기관 코딩테스트 분류:: 그리디 1. 문제 이해 및 해결과정 1번 풀이 - 가장 큰 수와 그 다음 큰 수 저장해놓고 - k가 될때까지는 큰 수 더하고 그 다음 큰 수 더하고를 반복한다 2번 풀이. 반복되는 수열에 대해서 파악하기 - ex) 5 8 3 /n 2 4 5 4 6일때 6 6 6 5 / 6 6 6 5 반복 - m//(k+1) 8//4 => 2, 2는 수열의 반복 횟수 2*k= 전체에서 가장큰 수가 몇번 나오는지 - m%(k+1) => 수열이 딱 안나누어 떨어질 경우 추가 되는 가장 큰 수의 개수 => sum = m//(k+1)*k + m%(k+1) 2. 풀이방법 - 1. 그리디 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 import sys sys.stdin =..