일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reinforcement learning
- 논문
- 알고리즘
- 프로그래머스
- 모두를 위한 딥러닝
- computer vision
- coding test
- 백준
- 내용추가
- Python
- object detection
- Today
- Total
목록coding test (14)
NISSO
from itertools import permutations def solution(numbers): answer = [] for i in range(len(numbers)): for j in permutations(list(numbers), r=i+1): n,s = int(''.join(j)),0 for i in range(int(n**0.5)+1): if n%(i+1) == 0: s += 1 if s==1 and n>1 or n==2: answer.append(n) return len(list(set(answer))) itertools를 사용했었지만 permutations는 처음 써봤다. 그리고 를 공부 안 하고 내 방식대로 소수를 찾았더니 2를 탐지를 못해서 그냥 2면 소수라고 리스트에 넣어줬다...
import math def solution(progresses, speeds): queue,answer = [math.ceil((100-progresses[0])/speeds[0])],[] for p,s in zip(progresses[1:]+[0], speeds[1:]+[1]): crnt = math.ceil((100-p)/s) if crnt > queue[0]: answer.append(len(queue)) queue = [] queue.append(crnt) return answer 레벨 2는 처음 푸는데 스택/큐 문제도 거의 안 풀어봤고, 알 것 같은데 안 풀려서 문제랑 거의 싸우다싶이 풀었다. 코테가 약 2시간 남았으니 코드 설명은 나중에 쓰기로... (지금 안 쓰면 나중에도 안 쓸 것 같아서..
def solution(p, c): p.sort() c.sort() for i in range(len(c)): if p[i] != c[i]: return p[i] return p[-1] 내 풀이. for i,j in zip(p,c): if i!=j: return i for문을 이렇게 바꾸면 더 깔끔해진다. 그리고 알게 된 건, Counter 객체끼리는 뺄셈이 가능하다는 것. 리스트끼리는 왜 뺄셈이 안 되냐고 생각했었는데 Counter객체가 가능한지는 몰랐다. import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) retur..
def dfs(v): print(v, end=' ') visit[v] = 1 for i in range(1,n+1): if s[v][i]==1 and visit[i]==0: dfs(i) def bfs(v): queue = [v] visit[v] = 0 while queue: v = queue[0] print(v, end=' ') queue.pop(0) for i in range(1,n+1): if s[v][i]==1 and visit[i]==1: queue.append(i) visit[i] = 0 n,m,v = map(int, input().split()) s = [[0]*(n+1) for _ in range(n+1)] visit = [0]*(n+1) for _ in range(m): x,y = map(..
이것도 이전 문제처럼 혼자 힘으로 풀 수 있을 줄 알았다. 일단 애초에 절대 혼자 못 풀었고, 구글링으로 힌트라고 해야하나, 코드만 안 봤지 코드 동작방식 설명을 보고 풀었다. 그리고 첫 계단을 안 밟아도 된다는 걸 몰랐다. 아무리 생각해도 답이 맞았는데 자꾸 틀렸대서 질문검색을 해보고 알았다. 계단은 '한 계단을 밟으면서' 오를 수 있다길래 첫 계단은 기본인 줄 알았다. .... 어쨌든 코드 동작방식을 보고 그대로 구현한 코드는 다음과 같다. n = int(input()) st = [int(input()) for _ in range(n)] dp = st[:1] + [0]*(n) for i in range(1,n): dp[i] = max(st[i]+st[i-1]+dp[i-3], st[i]+dp[i-2])..
드디어! 혼자 힘으로 푼 문제. 사실 전의 문제 [백준 1149]에서 조금 변형된 수준이라 풀 수 있었다. n = int(input()) t = [] for i in range(n): t.append(list(map(int,input().split()))) for i in range(1,n): t[i][0] = t[i][0] + t[i-1][0] t[i][i] = t[i][i] + t[i-1][i-1] for j in range(1,i): t[i][j] += max(t[i-1][j-1],t[i-1][j]) print(max(t[n-1])) 지금까지 풀었던 dp 문제들은 dp 변수에 리스트를 지정해줬기 때문에 이 문제도 그렇게 풀기 시작했다. dp = [[0]*(i+1) for i in range(n)] ..
이전 글에서 DP에 대해 이제 감이 잡히는 것 같다고 했는데 전혀 아니었나보다. 무조건 스스로 풀겠다 다짐해놓고 결국 또 구글링했다. 문제들을 다 구글링으로 풀어서 실력이 과연 늘지 의문이다. n = int(input()) cost = [] for i in range(n): cost.append(list(map(int, input().split()))) dp = [[0]*3 for _ in range(n)] dp[0] = cost[0] for i in range(1,n): dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + cost[i][0] dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + cost[i][1] dp[i][2] = min(dp[i-1][0], ..
피보나치를 활용한 답 구하기 문제인 줄 알았는데 해결방법 자체가 피보나치였다. 답을 구하는 과정이 피보나치 수열로 나오기 때문이다. > 실패한 코드 1 def fibo(n): global n0, n1 if n==0: n0 += 1 return 0 elif n==1: n1 += 1 return 1 return fibo(n-1) + fibo(n-2) l = list(int(input()) for j in range(int(input()))) for i in l: n0, n1 = 0,0 fibo(i) print(n0, n1) 처음 썼던 코드. 답은 맞았지만 시간초과로 실패했다. 위에서 말했듯이 재귀를 통해 피보나치를 구하는 과정에 0과 1이 출력되는 경우를 카운팅한 것이다. 문제를 직독직해해서 그대로 풀었다고..