목록카테고리 (60)
교대최소제곱법
하노이탑 문제의 답은 2**N - 1 이다. 라고 외웠었는데 왜 그럴까? 하노이탑의 기본 원리는 N개를 2번 기둥으로 옮기고 가장 큰 원판을 3번 기둥으로 옮긴 뒤 다시 N개를 3번 기둥으로 옮기는 방식이다. 즉, hanoi(n-1) + 1 + hanoi(n-1) 그럼 이게 왜 2**N - 1 일까? 만약 3번의 재귀를 돌았을 때를 계산해보면 다음과 같다. 2(2(2(x + 1) + 1) + 1 = 8x + 4 + 2 + 1 결국 1 + 2 + 4 + 8 + ... = 2**N - 1 인 것이다. 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 ..
Git ignore 그냥 파일 안에 .gitignore 파일을 만들고 상대경로로 무시하고 싶은 경로를 입력하면 된다. https://adjh54.tistory.com/16 [Github] .gitignore 이해 및 구성 방법 해당 글의 목적은 Repository에서 소스 작업 이후 Commit & Push를 하는 경우에 특정 ‘파일’ 및 ‘경로’를 제외하여 해당 작업을 진행하고자 할때, gitignore 파일을 사용합니다.이에 대해 .gitignore에 adjh54.tistory.com Git 커밋 메시지 규칙 기본적으로 Header, Body, Footer로 구성된다. 헤더는 제목, summary이며 (type) : 명령조 형식으로 구성된다. 바디가 제목에서 못한 자세한 내용, description ..
지나온 과거에 대한 성찰 "정말 최선을 다했는가?" 라는 질문을 한다면 "네"라고 답할 수 있을까? 잘 모르겠다. 혼자서는 자신을 극한까지 몰아 붙일 수 없다. 한계까지 몰아 붙일 수 있는 역경, 고난이 필요하다고 생각했다. 5개월 동안 내가 어떤 것을 얻어가고 싶은지 정글에 와서 가장 좋다고 느낀 것은 선배 개발자이신 코치님들의 조언이었다. 5개월 동안 코치님들을 열심히 괴롭혀서 조언을 왕창 받을 것이다. 또한 팀워크 역량을 키울 수 있는 환경도 좋은 것 같다. 혼자서 공부는 할 수 있지만 커뮤니케이션 능력을 키우거나 조별과제를 진행하면서 겪는 갈등, 문제 이런 것은 경험할 수 없었다. 정글에서의 많은 갈등과 문제들을 통해 "경험"을 얻어가고 싶다. 정글이 끝난 후 나의 모습은 어땠으면 좋겠는지 "정말..
최초 코드 from collections import deque def findCheese(): ls = [] for row in range(N): for col in range(M): if graph[row][col] == 1: ls.append((row, col)) if graph[row][col] == -1: graph[row][col] = 0 return ls def bfs(): q = deque() q.append((0, 0)) while q: r, c = q.popleft() for i in range(4): nr = r + dr[i] nc = c + dc[i] if nr = N or nc >= M: continue if graph[nr][nc] == 0:..
최초 코드 from copy import deepcopy from collections import deque dr = [1, 0, -1, 0] dc = [0, 1, 0, -1] N, M = map(int, input().split()) graph =[] for _ in range(N): graph.append(list(map(int, input().split()))) zero_ls = [] virus_ls = [] for row in range(N): for col in range(M): if graph[row][col] == 0: zero_ls.append((row, col)) elif graph[row][col] == 2: virus_ls.append((row, col)) def count(visi..
깃 용어 정리 깃을 활용한 협업 기초 팀장이 레포를 만들고 공동작업자를 등록하면 팀원들이 클론을 딸 수 있다 push 하기 전에는 반드시 최신 커밋을 pull하고 push 할 것! rebase와 merge는 고민하고 눌러야한다 [Git & GitHub] 협업하기 깃허브의 원격 저장소를 이용하여 하나의 작업을 여러 사용자가 협업하기 위해서는 각자 지역 저장소에서 작업한 내용을 자유롭게 원격 저장소에서 공유할수 있어야합니다. 1. 공동 작업자 12716.tistory.com
https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 풀이방법 DP를 활용한다 시간복잡도 O(N^2) : N dp를 구하고 dp의 크기 역순으로 index 접근 bisect 라이브러리의 bisect_left 함수를 활용 시간복잡도 O(N logN) : N < 10^6 타겟 수열의 원소는 알 수 없다 가장 긴 증가하는 부분 수열(LIS) 완전 정복 - 백준 파이썬 최근 들어, 알고리즘에 재미를 붙였다..
위상정렬이랑 DP를 활용하여 푸는 문제였다 위상정렬로 순서를 정하고 dp를 하는 것보다 위상정렬을 하면서 dp를 계산해나가면 되는 문제 25. 위상 정렬(Topology Sort) 25. 위상 정렬(Topology Sort) 위상 정렬(Topology Sort)은 '순서가 정해져있는 작업'을 차례로 수행해야 할 때 그 순서를 ... blog.naver.com 위상정렬은 우선순위가 있는 작업들의 순서를 정렬할 때 사용되는 알고리즘이다 DAG Directed Acyclic Graph 유향 비순환 그래프에서만 사용 가능하다 (사이클일 경우 사용 불가) 왜죠? 순환 그래프의 경우 모두 연결되어 있어서 사이클 내에서는 시작점을 찾을 수 없기 때문이다 시간복잡도는 O(V+E) 매우 빠른 편 https://www.a..