일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DATA
- 베이지안
- PYTHON
- 크롤링
- Crawling
- 불확실성
- 우분투
- 텍스트분석
- uncertainty
- 논문리뷰
- 리눅스
- 파이썬
- R
- VAE
- 코딩테스트
- pytorch
- 빅데이터
- 알고리즘
- 백준
- 텍스트마이닝
- GNN
- bayesian
- 데이터분석
- selenium
- AI
- 강화학습
- dropout
- Graph
- YarinGal
- pandas
- Today
- Total
목록Python/알고리즘(코딩테스트) (11)
끄적거림
문제 요약하면, [1,2,3, ... , n] 인 list에서 주어지는 list로 변환하려면 몇 번의 swap이 있었는지 반환하거나, 적어도 하나의 원소라도 3번 이상의 swap이 발생하면, "Too Chaostic"을 반환한다. 코드 # def minimumBribes(q): # nq = len(q) # raw = range(1, nq+1) # move_list = [] # # for i in range(nq): # ri = raw.index(q[i]) # move_list.append(ri - i) # print(move_list) # if max(move_list) > 2: # print("Too chaotic") # else: # print(sum([m for m in move_list if m ..
문제 요약하자면, left rotation operation은 n-size의 array를 왼쪽으로 d만큼 돌리는 연산이다. 코드 import collections as co def rotLeft(a, d): dq = co.deque(a) dq.rotate(-d) return dq if __name__ == '__main__': n = 5 d = 4 a = [1,2,3,4,5] result = rotLeft(a, d) print(result) 해설 collections.deque 두 번 쓰세요~
문제 요약하자면, 6 by 6 2차원 행렬이 주어질때, 3 by 3 사이즈의 모래시계모양의 숫자의 합들을 비교하여 가장 큰 수를 반환하는 것이다. 코드 def hourglassSum(arr): top = -90 for r in range(1,5): tmp = -90 for c in range(1,5): tmp = max(tmp, arr[r][c] + sum(arr[r-1][c-1:c+2]) + sum(arr[r+1][c-1:c+2])) top = max(top, tmp) return top if __name__ == '__main__': arr = [[1,1,1,0,0,0], [0,1,0,0,0,0], [1,1,1,0,0,0], [0,0,2,4,4,0], [0,0,0,2,0,0], [0,0,1,2,4,0..
문제 요약하면, 문자열 s가 주어졌을 때, s가 무한히 반복되는 상황이다. 이때, 처음부터 n번째까지의 자리까지 문자열에서 a의 개수를 반환하는 문제이다. 코드 # import numpy as np import collections as co """ - s : 무한히 반복될 문자열 - n : n번째 자리 수 """ # method 1 : co.Counter() # nains = dict(co.Counter(sl).most_common())['a'] # nainsubs = dict(co.Counter(s[:rrep]).most_common())['a'] # method 2 : for loop count def repeatedString(s, n): sl = list(s) ns = len(sl) nrep =..
문제 요약하자면, 구름을 밟고 건너가는 게임이 있는데, 오직 현재 적란운보다 1 또는 2만큼 건너 뛸 수 있으며, 적란운만 밟을 수 있고, 뇌우는 피해야한다. 시작 위치에서 마지막 구름까지 점프하는 데 필요한 최소 점프 횟수를 결정해야한다. 0은 밟을 수 있는 구름, 1은 피해야 하는 구름인데, 위 주어진 c를 보면 2가지 방법이 있다. 1) 0,2,4,6 번째 index를 가진 원소를 밟고 건널 수 있고, 2) 0,2,3,4,6 번째 index를 가진 원소를 밟고 건널 수 있다. 1번은 3번의 step, 2번은 4번의 step을 사용하였으므로, 반환 값은 3이 되어야한다. 코드 # import numpy as np # import collections as co """ - n : 총 구름 수 - c :..
문제 문제를 요약하자면, path로 주어지는 문자열이 있는데, U = Up-hill(+1), D = Down-hill(-1)이다. 해수면(0)을 기준으로 양수면 산, 음수면 계곡이다. 이때 계곡의 갯수를 반환하면 된다. 코드 # import numpy as np import collections as co """ - steps : 총 걸음 수 - path : 걸음의 자취 문자열 """ def countingValleys(steps, path): pl = list(path) res = 0 stus = 0 cumsum = co.deque([]) for i in range(steps): hike = pl[i] if hike == 'U': # up-hill stus += 1 else: # down-hill st..