일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오픽점수잘받는방법
- stack 스택
- opic
- 오픽노잼공부방법
- 오픽가격
- 메모이제이션
- 탑다운
- 안드로이드
- 영어말하기
- 안드로이드주석
- XML
- 영어회화
- English
- dp
- 바텀업
- 이진탐색
- topdown
- 다이나믹프로그래밍
- fibo
- XML주석
- dynamicProgramming
- 이진탐색 #나무 자르기
- 주석
- 디피
- ㅂ
- 오픽공부법
- 오픽노잼
- 피보나치수열
- 오픽
목록PS/Programmers (54)
RUBY
출처:: programmers.co.kr/learn/courses/30/lessons/12973?language=python3 분류:: 스택 1. 문제 이해 및 해결과정 2. 풀이방법 1. 스택 def solution(s): answer = 0 stack=[] #아무것도 없을 경우는 그냥 넣기 #top이 현재와 다르면 현재를 넣고 #top이 현재와 같으면 top을 뺌 for i in range(len(s)): if len(stack)==0 or stack[-1]!=s[i]: stack.append(s[i]) else: stack.pop() if stack: #스택에 남아있으면 return 0 else: #스택이 비어있으면 return 1 3. 오답원인 4. 알게된 점
출처:: programmers.co.kr/learn/courses/30/lessons/1845?language=python3 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. [ python ] def solution(nums): n=len(nums)//2 #잡을 수 있는 포켓몬 마리수 kind=len(set(nums)) #종류 return min(n,kind) #잡을 수 있는 포켓몬과 종류 중 작은것 2. [ python ] def solution(nums): n=len(nums)//2 #잡을 수 있는 포켓몬 마리수 kind=[] #추가할 수 있는 종류 for k in nums: if k not in kind: kind.append(k) return min(n,len(kind)) 3. [pyth..
출처:: programmers.co.kr/learn/courses/30/lessons/12924?language=python3 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. [ python ] def solution(n): cnt=0 for i in range(1,n+1): # 1~n까지 차례대로 기준 설정 sum=0 for j in range(i,n+1): #기준점부터 sum+=j if sum==n: #합이 n과 같으면 cnt+=1 break elif sum>n: #합이 n보다 크면 더 할 필요없음 break return cnt 3. 오답원인 4. 알게된 점
출처:: programmers.co.kr/learn/courses/30/lessons/12953# 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. 2개씩 빼서 최소공배수 구함 def lcd(a,b): #최소공배수 구하는 함수 x,y=a,b while a!=0: a,b=b%a,a #나머지, 나누는수 return x*y//b def solution(arr): while len(arr)>=2: #두개를 빼서 최대공배수 추가 a=arr.pop() b=arr.pop() arr.append(lcd(a,b)) return arr.pop() 3. 오답원인 1. a,b,c의 최소공배수를 한꺼번에 구하면 틀림 ex) 2,3,4 -> 2,3의 최소공배수를 구하고 구한 6과 4의 최소공배수를 구하는 방식으로 두개씩 ..
출처:: 2020 카카오 인턴십 programmers.co.kr/learn/courses/30/lessons/67257 분류:: 1. 문제 이해 및 해결과정 - 숫자와 연산자 분리하기 1) 정규표현식 expression = re.split('([*-+]{1})',expression) #*,-,+가 있으면 하나의 그룹으로 묶어서 2) expression = re.split(r'(\D)',expression) #숫자가 아닌 것을 그룹으로 묶어서 3) 정규표현식을 안쓰면 tmp="" num=[] op=[] for x in expression: if x=="*" or x=="-" or x=="+": num.append(int(tmp)) op.append(x) tmp="" else: tmp=tmp+x num.ap..
출처:: programmers.co.kr/learn/courses/30/lessons/12949 분류:: 1. 문제 이해 및 해결과정 - 두 행렬 곱이 가능하기 위해서는 a*b b*c 의 형태여야한다 1. a*c의 결과배열을 만들어두거 2. for문으로 a,c,b의 반복문을 돌리면서 계산하면 된다 2. 풀이방법 1. for 문 def solution(arr1, arr2): result = [[0]*len(arr2[0]) for i in range(len(arr1))] for i in range(0,len(arr1)):#arr1행 for j in range(0,len(arr2[0])): #arr2열 for k in range(0,len(arr1[0])): result[i][j]+=arr1[i][k]*arr..
출처:: programmers.co.kr/learn/courses/30/lessons/12951 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. 함수 이용 str.upper() str.lower() def solution(s): s=list(s) #s가 문자열이라면 item assignment가 불가능함 #첫글자와 공백 다음문자는 대문자 #이외엔 소문자 flag=True #단어의 첫글자 for i in range(len(s)): if flag==True: #단어의 첫글자라면 s[i]=s[i].upper() flag=False else: #단어의 첫글자가 아니라면 s[i]=s[i].lower() #소문자로 if s[i]==" ": #공백 뒤에는 단어의 첫글자 flag=True return ''.j..
출처:: programmers.co.kr/learn/courses/30/lessons/64065 분류:: 1. 문제 이해 및 해결과정 2. 풀이방법 1. [ python ] 문자열 split def solution(s): answer = [] s = s[2:-2] #양쪽의 {{ }} 제거 s = s.split("},{") #숫자들과 집합안의 콤마만 남게 됨 ex.['1,2,3', '2,1', '1,2,4,3', '2'] s.sort(key = len) #길이 순서대로 담김 for i in s: tmp = i.split(',') #콤마를 기준으로 쪼갬 for n in tmp: #각 원소가 if int(n) not in answer: #answer안에 없으면 answer.append(int(n)) #추가하기..