일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이진탐색
- English
- 오픽노잼
- 주석
- dynamicProgramming
- dp
- XML
- 안드로이드주석
- 오픽가격
- 오픽점수잘받는방법
- 탑다운
- 오픽노잼공부방법
- 디피
- ㅂ
- 바텀업
- 영어말하기
- 메모이제이션
- 오픽
- 다이나믹프로그래밍
- 피보나치수열
- XML주석
- 이진탐색 #나무 자르기
- stack 스택
- fibo
목록PS/BOJ (143)
RUBY
출처:: https://www.acmicpc.net/problem/10431 분류:: 문자열 1. 문제 이해 및 해결과정 삽입정렬 시간복잡도 : O(P*N^2) 2. 풀이방법 import sys p = int(input()) arr= [0]*20 for t in range(1,p+1): h = list(map(int,input().split()))[1:] cnt=0 for i in range(20): for j in range(i): #줄 서있는 학생 중에 자신보다 큰 학생을 찾는다. if(h[j]>h[i]): tmp = h[i] #그 학생과 그 뒤의 학생이 모두 한 칸씩 뒤로간다. for k in range(i,j,-1): h[k] = h[k-1] cnt+=1 h[j] = tmp break print(..
출처:: https://www.acmicpc.net/problem/1236 분류:: 문자열 1. 문제 이해 및 해결과정 1) 행, 열을 보면서 x가 있으면 그 행,열은 보호받은 행,열 2) 구하고자 하는 것 : 보호하기 위해 더 필요한 경비원 = 보호받지 못하는 행, 열 3) 추가해야 되는행, 열 중 더 큰 값을 구하면 된다. 2. 풀이방법 import sys n, m= map(int, input().split()) castle = [ input() for _ in range(n)] check_row = [0]*n check_col = [0]*m #1.경비원 체크 for i in range(n): for j in range(m): if(castle[i][j] =='X'): check_row[i]=1 ch..
출처:: https://www.acmicpc.net/problem/10989 분류::배열 1. 문제 이해 및 해결과정 -O(n^2) : 100,000,000,000 => 천만 * 천만 = 100조 , 5초에 비해 너무 크다 2. 풀이방법 import sys input = sys.stdin.readline n = int(input()) arr = [0] * (10000+1) for _ in range(n): arr[int(input())]+=1 for i in range(1,10001): while arr[i]>0: print(i) arr[i]-=1 3. 오답원인 - sys.stdin.readline 안쓰면 에러남 4. 알게된 점
출처:: https://www.acmicpc.net/problem/15552 분류::배열 1. 문제 이해 및 해결과정 - 시간복잡도 확인 필요 2. 풀이방법 import sys input = sys.stdin.readline n = int(input()) for _ in range(n): a,b = map(int, input().split()) print(a+b) 3. 오답원인 4. 알게된 점 C scanf/printf는 충분히 빠릅니다. C++ 아래 얘기는 cin, cout을 쓸 때의 얘기지, scanf/prinf로 입출력을 하고자 하신다면 그냥 쓰시면 됩니다. scanf/printf는 충분히 빠릅니다. endl은 개행문자를 출력할 뿐만 아니라 출력 버퍼를 비우는 역할까지 합니다. 그래서 출력한 뒤 화..
출처:: https://www.acmicpc.net/problem/13223 분류::문자열 1. 문제 이해 및 해결과정 입력1, 입력2 입력1이 더 크면 24에서 입력1빼고 + 입력2 입력2가 더 크면 입력2에서 입력1뺌 * 시분초의 계산 1) 차이 계산 -초 차이가 음수면 초+=60 , 분 -- -분 차이가 음수면 분+=60 ,시간 -- -시간 차이가 음수면 시간 += 24 2) 가장 작은 단위인 초로 통일하기 시간 = total 초 / 3600 분 = ( total 초%3600) / 60 초 = total 초 % 60 2. 풀이방법 curtime = input().split(":") #['20', '00', '00'] target = input().split(":") cur_h,cur_m, cur_s..
출처:: https://www.acmicpc.net/problem/3273 분류::배열 1. 문제 이해 및 해결과정 O(n^2) n:100000 -> n*2 10,000,000,000 2. 풀이방법 n = int(input()) arr = list(map(int, input().split())) x = int(input()) cnt = [0] * 1000001 sol = 0 for i in range(n): cnt[arr[i]] +=1 for i in range(1,(x-1)//2 + 1): if x-i
출처:: https://www.acmicpc.net/problem/1543 분류:: 문자 1. 문제 이해 및 해결과정 2번 풀이 단어를 제거한다. 제거한 것 = word길이 * count(횟수) 2. 풀이방법 1) find함수 이용 doc = input() word = input() cnt = 0 startIdx = 0 while 1: idx = doc.find(word,startIdx); if idx < 0 : break startIdx = idx + len(word) cnt += 1 print(cnt) 2) replace 이용 doc = input() word = input() tmp = doc.replace(word, '') sol = (int)((len(doc) - len(tmp))/len(wor..
출처:: https://www.acmicpc.net/problem/1919 분류:: 문자열 1. 문제 이해 및 해결과정 - 공통 문자 이외를 지워야함 dared { 'a' : 1, , 'd' : 2, 'e' : 1, 'r' : 1} bread { 'a' : 1, ' b' : 1 , 'd' : 1, 'e' : 1, 'r' : 1} => 2 (b 와 d의 차이) 2. 풀이방법 1) python counter 함수 이용하기 import sys from collections import Counter a = input() b = input() countA = Counter(a) countB = Counter(b) ans1 = countA - countB ans2 = countB - countA ans = ans..