일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드주석
- opic
- ㅂ
- 주석
- topdown
- 오픽가격
- 오픽점수잘받는방법
- XML
- 오픽공부법
- English
- 오픽노잼공부방법
- 메모이제이션
- 안드로이드
- stack 스택
- 오픽노잼
- 디피
- 바텀업
- 이진탐색
- 영어말하기
- XML주석
- dp
- 다이나믹프로그래밍
- 이진탐색 #나무 자르기
- 피보나치수열
- fibo
- 탑다운
- dynamicProgramming
- 오픽
- 영어회화
목록PS (254)
RUBY
출처:: programmers.co.kr/learn/courses/30/lessons/12909?language=python3 분류:: 스택 1. 문제 이해 및 해결과정 괄호 문제는 3가지 케이스로 나뉜다 1. 현재가 ( 일 경우 -> 무조건 stack에 더함 2. 현재가 ) 이면서 이전것이 (일 경우 -> stack.pop() =>괄호의 균형이 맞으므로 뺌 ( 3. 현재가 ) 이면서 이전것이 없거나 )일 경우 -> stack에 현재 추가 stack에 무언가 남아있다면 균형잡힌 괄호가 아니라는 뜻이다. 2. 풀이방법 1. 스택 def solution(s): stack=[] for x in s: if x=='(': stack.append('(') else: if stack and stack[-1]=='('..
출처:: programmers.co.kr/learn/courses/30/lessons/42860 분류:: 그리디 1. 문제 이해 및 해결과정 1) 상하 - 알파벳 바꾸는 과정 2) 좌우 - 어떤 알파벳을 바꿀지 1번과 2번의 과정이 필요하다. -> 1번은 쉽게 해결되었지만 2번이 왜 필요한지 이해가 되지 않았다. 2번의 예시는 CAAAAACCC -> 이것을 빠르게 좌우 해결하는 방법은 첫번째 C에서 오른쪽으로 가는 것이 아니라, C에서 바꾸고, 왼쪽으로 가면 마지막문자인 C로 이동함 -> 오른쪽에서 왼쪽으로 해결 2. 풀이방법 1. def solution(name): res=0 #답, 알파벳변화 + 커서 이동 #알파벳의 횟수 # A ~ N, N~ZA 중에 작은 수를 이동시키기 moveAlpha= [ mi..
출처:: programmers.co.kr/learn/courses/30/lessons/42842?language=python3 분류::완전탐색 1. 문제 이해 및 해결과정 - 주어진 것 : brown 개수와 yellow 개수 - 구하려는 것 : 가로, 세로 (단, 가로의 길이는 세로길이보다 같거나 크다) - 유추할 수 있는 것 : 테두리는 가로 세로 각각 2줄을 차지함 / (가로 -2 ) * (세로-2) = yellow / 전체 사각형 = brown + yellow 1. 가로, 세로는 전체 넓이의 약수이므로 약수들을 구한다. 2. 약수중에 (가로 -2 ) * (세로-2) = yellow 를 만족하는 것을 찾자 2. 풀이방법 1. [ python ] 수학 def solution(brown, yellow):..
출처::월간 코드 챌린지, programmers.co.kr/learn/courses/30/lessons/68936?language=python3 분류:: 분할정복, 재귀 1. 문제 이해 및 해결과정 - 분할 정복의 대표적인 문제이다 - 네 부분으로 쪼개서 개수가 한개일때까지 반복해야한다 - 0으로만 이루어져 있거나, 1로만 이루어져 있으면 개수를 세고 - 0과 1이 섞여있으면 4개 영역으로 분할 된다 - 분할을 하기 위해서는 시작지점(h,w),크기,현재 배열이 필요하다 2. 풀이방법 1. [ python ] 재귀 onecnt,zerocnt=0,0 def quadTree(h,w,size,arr): global onecnt,zerocnt one=True #1로만 이루어 졌을 때 zero=True #0으로만 ..
출처:: programmers.co.kr/learn/courses/30/lessons/42578?language=python3 분류:: 해시 1. 문제 이해 및 해결과정 1) 해시 1. dict= {'옷의 종류' : '옷1','옷2' } 형태로 담는다 2. 경우의 수는 [각 종류별로 있는 옷의 수 + 1 (그 옷을 선택하지 않는 경우) ] 를 각 종류 마다 곱해주고 모두 선택되지 않는 경우는 없으므로 -1을 해준다 -> 모자 종류:2 목거리:3 상의:4 라고 가정하면, ( 2+1 ) * ( 3 + 1) * ( 4 +1 ) = 3*4*5 - 1(모두선택하지않을 때) 로 계산하면 된다 2. 풀이방법 1. [python] 해시 - dict => 옷의 종류 : 옷 1, 옷2 def solution(clothes..
출처:: programmers.co.kr/learn/courses/30/lessons/12905?language=python3 분류:: 완전탐색, dp 1. 문제 이해 및 해결과정 1) dp - O(n^3)로 완탐하면 시간초과 발생가능성이 있으므로, dp를 고려함 - dp는 만들 수 있는 최대 직사각형의 크기 - board[i][j]가 1일 경우에만, dp = min(board[i-1][j-1],board[i][j-1],board[i-1][j]) + 1 2. 풀이방법 1. dp def solution(board): h=len(board) #세로 w=len(board[0]) #가로 for i in range(1,h): for j in range(1,w): board[i][j]=min(board[i-1][j..
출처:: programmers.co.kr/learn/courses/30/lessons/42577 분류:: 해시 1. 문제 이해 및 해결과정 1. 정렬 - phone_book을 정렬하면, 12 123,1234 와 같이 정렬된다. - 리스트 내에서, 앞의 수와 뒤의 수 끼리만 확인하면 된다 2. 풀이방법 1. [ python ] 정렬 - 생각해보니 이 풀이는 ["146","2146"]의 경우는 통과되면 안되는데 이것이 답이 되었다. --???? - 이 테스트케이스는 포함하는 경우이기 때문이다 - 접두사해 포함해야 하므로 아래 풀이는 틀린 풀이이다 def solution(phone_book): phone_book.sort() #정렬을 하게되면, 앞뒤의 숫자만 비교하면 된다 for i in range(len(p..
출처:: programmers.co.kr/learn/courses/30/lessons/42747# 분류:: 정렬 1. 문제 이해 및 해결과정 1) 이분탐색 - 이분탐색으로 풀이하였다. - 테스트케이스 16에서 실패했었는데, [0,1,1] 1 을 고치니 해결이 되었다 -> hindex함수에서 index의 초기값때문에 if len(citations)-index>=mid 가 참이 나올 수 있는 경우 때문이였다. 초기 index를 10000으로 설정해주어서 해결 - ex) [3 0 6 1 5] -> (정렬) [ 0 1 3 5 6 ] -> len=5 이므로 mid가 2부터 시작 , 3>=2 이므로, index=2 이고, 5-2 >= 2 이므로 ,True s+e = 3+5 //2 = 4, mid=4, 5>=4 이므..