전체 글

·문제풀이/DP
https://www.acmicpc.net/problem/13902코드import sysinput = sys.stdin.readlineINF = int(1e9)n, m = map(int, input().split())s = list(map(int, input().split()))wok_set = set(s)dp = [INF]*(n+1)for i in range(m): dp[s[i]] = 1 for j in range(i+1, m): if s[i]+s[j]  로직은 어렵지 않은데 시간 복잡도 줄이기가 정말 어려웠던 문제였다...조건문을 잘 사용해서 필요없는 연산은 최대한 넘어가는 것이 중요하다. 1. 웍으로 한 번에 조리 가능한 경우의 수를 wok_set에 저장할 때 dp에도 1로 ..
·공부/React
eslint를 다시 정리하고 실행해서 나온 에러를 보며 코드를 수정하던 중 다음과 같은 에러를 만났다. The 'setUpRoom' function makes the dependencies of useEffect Hook (at line 88) change on every render. Move it inside the useEffect callback. Alternatively, wrap the definition of 'setUpRoom' in its own useCallback() Hook react-hooks/exhaustive-deps 문제가 되는 코드는 다음과 같았다.const setUpRoom = async (shouldCreateRoom: boolean) => { if (shouldCre..
https://www.acmicpc.net/problem/1120코드import sysinput = sys.stdin.readlinea, b = input().split()answer = 50for i in range(len(b)-len(a)+1): cnt = 0 for j in range(len(a)): if a[j] != b[j+i]: cnt += 1 answer = min(answer, cnt)print(answer)  b에서 a와 가장 유사도가 높은 부분을 찾은 뒤에 나머지 남은 길이는 b와 같은 글자들로 채워넣으면 a와 b의 차이를 최소로 할 수 있다.예를 들어, 문제의 예제 3인 `koder topcoder`를 예시로 보면 topcoder    ..
https://www.acmicpc.net/problem/15683코드answer = 64n, m = map(int, input().split())office = []cctv = []blank = 0for i in range(n): line = list(map(int, input().split())) for j in range(m): if line[j] != 0 and line[j] != 6: cctv.append([i, j, line[j]]) elif line[j] == 0: blank += 1 office.append(line)dx = [-1, 0, 1, 0]dy = [0, 1, 0, -1]# cctv 종류에 따라서 이동..
네부캠에서 그룹 프로젝트로 개발했던 프로젝트를 리팩토링하게 되며 가장 첫번째 목표로 코드 품질 개선을 목표로 잡았다. 근데 코드 품질이 정확히 뭘까? 어디가 코드 품질이 나쁜지 어떻게 측정하고 어떻게 개선할까? 이 궁금증을 먼저 해결해야 목표를 잡고 계획을 수립할 수 있을 것 같아서 코드 품질에 대해 알아봤다. 💡 코드 품질이란?코드 품질은 코드의 효율성, 가독성, 유용성에 대해 설명하는 방법이다.코드 품질의 기준유지보수성: 기존의 코드를 손상시키거나 새로운 버그를 발생시키지 않고 빠르게 코드를 수정하거나 추가할 수 있는가?가독성: 코드를 읽고 이해하기 얼마나 쉬운가?함수/변수 네이밍, 일관된 포맷팅과 코딩 스타일, 적절한 주석, 함수 하나의 크기가 적절한지, 모듈화, 응집도/결합도 등으로 가독성을 판..
https://www.acmicpc.net/problem/1707 코드from collections import dequeimport sysinput = sys.stdin.readlinedef bfs(edges, start, colors): q = deque([start]) colors[start] = 1 while q: now = q.popleft() for nx in edges[now]: if colors[nx] == 0: colors[nx] = colors[now] % 2+1 q.append(nx) elif colors[nx] == colors[now]: ..
딜레이레이
개발새발