분류 전체보기

    파일 합치기[백준 11066] - python

    파일 합치기[백준 11066] - python

    import sys input = sys.stdin.readline INF = 1e9 def BOJ11066() : global files global presum global cache def dp(start, end) : if start == end : return files[start] if cache[start][end] != 0 : return cache[start][end] result = INF sum = presum[end+1] - presum[start] for i in range(start, end) : result = min(result, dp(start, i) + dp(i+1, end) + sum) cache[start][end] = result return result T = in..

    스티커[백준 9465] - python

    스티커[백준 9465] - python

    import sys input = sys.stdin.readline def BOJ9465() : T = int(input()) for _ in range(T) : n = int(input()) sticker = [] for _ in range(2) : sticker.append(list(map(int, input().split()))) dp = [[0 for _ in range(n)] for _ in range(2)] dp[0][0], dp[1][0] = sticker[0][0], sticker[1][0] for i in range(1, n) : dp[0][i] = max(dp[1][i-1] + sticker[0][i], dp[0][i-1]) dp[1][i] = max(dp[0][i-1] + sticke..

    지역성에 기반한 패키지 구조

    최근에 프로젝트 구조를 고민하던 중 코드리뷰에서 아래의 글을 참고하는 것이 어떻냐는 답변을 받고 나서 글을 읽게 되었습니다. 메모리 참조에도 지역성이 있듯이 코드 작업을 하면서도 지역성에 근거하여 작업을 하게 되고 (한 곳을 바꾸게 되면 연관된 부분을 연쇄적으로 바꾸게 될 가능성이 크다) 이 지역성에 근거하여 구조를 잡으면 변경하는 부분이 근처에 위치하게 되므로 시도해볼만한 구조의 설계라고 이해하였습니다. https://ahnheejong.name/articles/package-structure-with-the-principal-of-locality-in-mind/ 지역성의 원칙을 고려한 패키지 구조: 기능별로 나누기 보다 효율적이고 견고한 패키지 구조에 대한 고민 ahnheejong.name

    DFS와 BFS [백준 1260] - python

    DFS와 BFS [백준 1260] - python

    from collections import deque import sys input = sys.stdin.readline def BOJ1260(): def dfs(start, visited, graph): stack = [] stack.append(start) print(start, end=" ") while stack: node = stack.pop() visited[node] = True for next in range(1, len(graph[node])): if visited[next] == False and graph[node][next] == 1: visited[next] = True dfs(next, visited, graph) def bfs(start, visited, graph): queu..

    편의점 2 [백준 14400] - python

    편의점 2 [백준 14400] - python

    import sys input = sys.stdin.readline def BOJ14400(): n = int(input()) l = [] a = [] b = [] for _ in range(n) : x, y = list(map(int, input().split())) a.append(x) b.append(y) l.append([x,y]) a.sort() b.sort() x_median = a[len(a)//2] y_median = b[len(b)//2] result = 0 for x, y in l : result += abs(x-x_median) + abs(y-y_median) print(result) BOJ14400() 접근 방법 : 1. 두 위치의 거리는 맨하탄 거리로 구한다. 거리합을 최소로 하는..

    행렬 곱셈 순서 [백준 11049] -python

    행렬 곱셈 순서 [백준 11049] -python

    import sys input = sys.stdin.readline INF = 2**31 def BOJ11049() : N = int(input()) l = [] for _ in range(N) : l.append(list(map(int, input().split()))) dp = [[0 for _ in range(N+1)] for _ in range(N+1)] # dp[i][j] = 행렬 i 부터 j까지의 곱의 최솟값 for i in range(1, len(l)+1) : # 0 1 2 3 for j in range(N-i) : # 4 (0, 1, 2, 3), 3 (0, 1, 2), 2 (0, 1), 1 (0) if i == 1 : dp[j][j+1] = l[j][0] * l[j][1] * l[j+1][..

    Frontend Interview Cheatsheet

    Frontend Interview Cheatsheet

    이 글은 아래에 첨부되어 있는 글의 한글 번역입니다. 오역이 들어 있을수 있습니다. 만약 프론트엔드 면접을 준비하고 있고 프론트엔드 도메인 지식을 빠르게 refresh 하고 싶다면 이 cheatsheet는 많은 시간을 아껴줄 것입니다. 목차 Intro Web Knowledge 1.Caching 2.HTTP/2 3.Security Web Performance 1.Critical rendering Path 2.Reflow 3.preload,preconnect,prefetch,prerender 4.Rendering Performance 5.Workers 6.Image Optimization DOM 1.Elements 2.Manipulation 3.Document Fragment 4.Event delegatio..

    스크린리더를 사용해보자

    스크린리더를 사용해보자

    html의 시맨틱 마크업은 httml의 태그를 주어진 목적을 위해 사용함 으로써 1. 검색엔진 최적화 2. 접근성 3. 유지보수 등의 장점을 추구하는 것이다. 예시를 들자면 header, main, aside, section, article. figure, footer 등등의 태그를 목적에 맞게 사용하는 것이다. 이중 접근성에 관한 요소중 하나는 스크린 리더에서 인식하기 용이하게 하기 위함이라고 알고있다. 스크린 리더란 용어 그대로 스크린을 읽어서 안내해주는 것이다. 스크린리더가 실제로 어떻게 동작하는지 알고싶어서 사용을 해봤고 글을 남긴다. 문서는 아래의 구글 링크를 참조하면 된다. mac에서는 voiceover라는 내장 스크린리더가 있다.(mac을 사용하고 있어 mac 기준으로만!!) 웹 사이트를 열..

    Dance Dance Revolution [백준 2342] - python

    Dance Dance Revolution [백준 2342] - python

    import sys input = sys.stdin.readline INF = 1e8 def BOJ2342() : def get_distance(curr, target) : if curr == target : return 1 elif curr == 0 : return 2 elif abs(curr - target) % 2 == 0 : return 4 else : return 3 l = list(map(int, input().split())) # dp[n 번째 움직임][왼발위치][오른발위치] dp = [[[INF for _ in range(5)] for _ in range(5)] for _ in range(len(l)+1)] dp[0][0][0] = 0 for i in range(1, len(l)) : mo..

    피사노 주기 [백준 9471] - python

    피사노 주기 [백준 9471] - python

    import sys input = sys.stdin.readline def solution(num): answer = 1 mod1, mod2 = 1, 2 while True: if mod1 % num == 1 and mod2 % num == 1: break answer += 1 mod1, mod2 = mod2, (mod1 + mod2) % num return answer def BOJ9471(): P = int(input()) for _ in range(P): N, M = map(int, input().split()) answer = solution(M) print(f"{N} {answer}") BOJ9471() 접근 방법: 1. 여러가지 성질이 문제에 주어져있어 이것들도 고려해야 하나 생각이 들었던 문..