일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오픽
- 오픽노잼공부방법
- 이진탐색 #나무 자르기
- 영어말하기
- fibo
- 피보나치수열
- 안드로이드
- 이진탐색
- 바텀업
- XML
- 영어회화
- 메모이제이션
- 오픽노잼
- ㅂ
- 오픽공부법
- English
- 오픽가격
- 오픽점수잘받는방법
- 탑다운
- opic
- 다이나믹프로그래밍
- topdown
- 안드로이드주석
- 디피
- dp
- dynamicProgramming
- stack 스택
- 주석
- XML주석
목록PS/Programmers (54)
RUBY
출처:: https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=python3 분류:: BFS 1. 문제 이해 및 해결과정 2. 풀이방법 1) python BFS from collections import deque def solution(maps): dh=[-1,0,1,0] #시계방향 dw=[0,1,0,-1] h=len(maps) w=len(maps[0]) Q=deque() Q.append((0,0)) while Q: cur=Q.popleft() for i in range(4): nh=cur[0]+dh[i] nw=cur[1]+dw[i] if 0
출처:: https://school.programmers.co.kr/learn/courses/30/lessons/86491 분류:: 완전탐색 1. 문제 이해 및 해결과정 1) 완전탐색 - 50 60, 30 70, 30 60 . 40 80 -> (x,y) xy: arr.append([y,x]) else: arr.append([x,y]) for x, y in arr: if x> maxx: maxx=x if y> maxy: maxy = y return maxx*maxy 3. 오답원인 4. 알게된 점
출처:: https://school.programmers.co.kr/learn/courses/30/lessons/42748 분류:: 정렬 1. 문제 이해 및 해결과정 2. 풀이방법 def solution(array, commands): answer = [] for i,j,k in commands : tmp = array[i-1:j] tmp.sort() answer.append(tmp[k-1]) return answer 3. 오답원인 4. 알게된 점
출처:: https://school.programmers.co.kr/learn/courses/30/lessons/42746 분류:: 정렬 1. 문제 이해 및 해결과정 숫자의 최댓값이 1000이기 때문에 숫자를 문자열로 보고 3배 늘리면 문자열 정렬을 통해 숫자의 크기를 쉽게 비교할 수 있다. ex) 3, 910, 10 -> (3배 문자열 늘림) 333, 910910910, 101010 -> (문자열 기준 정렬 시) 910 > 3 > 10 또한, 최종 결과는 str로만 출력하면 안된다. 만약, 0 0 0 이 있으면 문자열은 000으로 반환하기 때문에 int 로 변경 후 다시 str로 출력해야한다. 2. 풀이방법 def solution(numbers): numbers_str = list(map(str,num..
출처:: programmers.co.kr/learn/courses/30/lessons/12980?language=python3 분류:: 1. 문제 이해 및 해결과정 거리 1 2 3 4 5 6 7 1 1 2 - 2 : 1이동 + 순간2 or 2이동 - 3 : 1이동 + 순간2 + 1이동 - 4 : 1) 4이동 2) dp = min( dp[n//2] (나누어떨어질 경우) , n) dp = min( dp[n-1] + 1 , n ) 2. 풀이방법 1. def solution(n): cnt=1 while n>1: if n%2==0: #2로 나누어떨어지면 n//=2 else: n-=1 #숫자 짝수로 만들기 cnt+=1 return cnt 2. 이진수로 바꿀 때, 1의 개수가 필요한 점프의 개수 def solutio..
출처:: programmers.co.kr/learn/courses/30/lessons/12981?language=python3 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. [python] def solution(n, words): turn=0 num=1 #이미말했던것을 또말하면 탈락 # words 수가 n으로 나누어 떨어지고 이전글자와 첫번째 글자 같으면 합격 for i in range(1,len(words)): word=words[i] num%=n if words[i-1][-1]!=word[0] or word in words[0:i]: #글자 틀린 경우 turn=i//n+1 return [num+1,turn] #탈락하는 사람은 번호, 몇번째차례 num+=1 return [0,0] 3. 오답..
출처:: programmers.co.kr/learn/courses/30/lessons/43165 분류:: dfs 1. 문제 이해 및 해결과정 2. 풀이방법 1. [python] dfscnt=0 def dfs(d,n,res,numbers,target): global cnt if d==n-1: if res==target: cnt+=1 else: dfs(d+1,n,res+numbers[d+1],numbers,target) #더할 경우 dfs(d+1,n,res-numbers[d+1],numbers,target) #뺄 경우 def solution(numbers, target): dfs(-1,len(numbers),0,numbers,target) return cnt 3. 오답원인 4. 알게된 점
출처:: programmers.co.kr/learn/courses/30/lessons/12977?language=python3 분류:: 소수판별 1. 문제 이해 및 해결과정 2. 풀이방법 1. 소수판별 from itertools import combinations import math def isprime(x): #소수 판별 for i in range(2,int(math.sqrt(x))+1): if x%i==0: return False return True def solution(nums): cnt=0 candi=[] selected=list(combinations(nums,3)) for x,y,z in selected: candi.append(x+y+z) #만들수 있는 경우의 수 for x in can..