[DFS] 1967. 트리의 지름 (Python)
·
Computer Science/자료구조와 알고리즘
문제 https://www.acmicpc.net/problem/1967 풀이 한 노드 기준에서 각 정점까지 거리를 구하기 가장 먼 길이에 해당하는 노드 찾기 2번의 노드를 기준으로 거리 구하는 과정을 한번 더 반복하면 됨 import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) def dfs(idx,v): for n_idx, n_val in tree[idx]: if visited[n_idx] == -1: visited[n_idx] = v+n_val dfs(n_idx,v+n_val) n = int(input()) tree = {} for i in range(1,n+1): tree[i] = [] for _ in range(n-1): a,b,c =..
[Python] 가장 긴 증가하는 부분 수열(LIS) 구하는 방법
·
Computer Science/자료구조와 알고리즘
가장 긴 증가하는 부분 수열의 '길이'을 구하는 방법은 1. DP(Dynamic Programming) - 동적 계획법 2. Binary Search - 이분 탐색 으로,, 이전 게시글 참고하기 : https://bskwak.tistory.com/259 이번 게시물은 '길이'가 아닌 가장 긴 증가하는 부분 수열(LIS) 자체를 구하는 방법이다. 풀이 방법을 간단하게 설명하면, 1. dp를 통해 LIS 길이 구하기 2. 역추적하여 배열 구하고 뒤집으면 구할 수 있음 관련 문제 : https://www.acmicpc.net/problem/14002 import sys input = sys.stdin.readline n = int(input()) arr = list(map(int, input().split()..
[Python]가장 긴 증가하는 부분 수열(LIS) 길이 구하는 방법 2가지
·
Computer Science/자료구조와 알고리즘
가장 긴 증가하는 부분 수열(LIS) 풀이 방법 부분 수열 : 임의의 수열이 주어질 때, 몇 개의 수를 제거하여 만든 수열 부분 수열 중 가장 긴 증가하는 부분 수열을 구하는 방법은 2가지가 있다. 1. DP(Dynamic Programming) - 동적 계획법 2. Binary Search - 이분 탐색 1. 동적 계획법을 사용한 풀이 (백준 11053) 문제 : https://www.acmicpc.net/problem/11053 import sys input = sys.stdin.readline n = int(input()) arr = list(map(int, input().split())) dp = [1 for i in range(n)] for i in range(n): for j in range(..
[코테 대비] javascript 기본 문법
·
Computer Science/자료구조와 알고리즘
문자열 → 숫자 : parseInt(문자열변수, 10) var str_n = "12"; var int_n = parseInt(str_n, 10); 숫자 → 문자열 : 숫자변수.toString() var n = 10 var str_n = n.toString(); 문자열 길이 : 문자열변수.length console.log(str_n.length) 문자열 → 배열 : [...문자열변수] my_string = '12345; console.log([...my_string]); 배열 뒤집기 : 배열.reverse() num_list=[1,2,3]; num_list.reverse(); 배열 자르기 : 배열.slice(시작,끝) const arr = ['a', 'b', 'c', 'd']; const arr1 = ar..
[누적합] 10986. 나머지의 합 (Python)
·
Computer Science/자료구조와 알고리즘
시도 1 deque로 풀 수 있을 것이라 생각했다.. [value, idx ] (value: 현재까지 값, idx : 현재 위치) 를 deque에 추가 하나씩 꺼내어 idx+1 번째의 값을 value에 더하고 m으로 나눈 나머지가 0인지 아닌지 체크 당연하게 시간초과.. 시도 2 (정답) list = [1,4], m으로 나눈 나머지 r 이라고 할 때, 다음과 같이 식을 작성할 수 있다 tmp1 = list[0] * m + r tmp2 = list[1] * m + r r의 값이 동일하다면, tmp2 - tmp 1 = m * (list[1] - list[0]) 이말은 즉,, 나머지가 같으면? m으로 나누어 떨어진다는 의미와 같다. 만약, list가 누적합 리스트라면, list[1] - list[0] 은 구간..
Git&Github 고급 (Rebase)
·
Computer Science/git&github
-Open UP에서 공개SW 실습교육 2일차- 1. Fork 저장소와 오픈소스 GitHub 저장소 설정 **upstream으로 등록 ** git remote add upstream (오픈소스 github 프로젝트 URL) upstream을 fork한 저장소의 url을 넣지 않도로 주의* 현재 등록된 저장소 확인 git remote -v 2. Rebase가 필요한 상황 팀프로젝트 498commits (를 가져온 내용) => base commits base commits위에 다른 499,500번째 commit을 만들어내고, 이 달라진 부분을 제출할 수 있음 Q. base는 항상 똑같은가? A. No. 팀프로젝트가 혼자 하는 것이 아니기 때문에, 계속 바뀌게 된다. Rebase란? - base를 교체하는 방식..
Stash vs Checkout
·
Computer Science/git&github
※ Stash vs Checkout ★ Stash - 수정내용 임시 저장, 복구 가능 - keeping 느낌 - 버그 수정 (before/after 비교 가능) ★ Checkout - git checkout -- 파일명 파일 원상 복구(수정 내용 완전히 날림) - git checkout -- 브랜치명" 도서관(.git 히스토리 창고)에서 책을 대출받다" 이런 느낌 1. git diff(수정내용 확인) 2. 임시저장 git stash 3. 임시저장 복구 git stash pop 1. git diff (수정 내용 확인) 2. 수정 전 상태로 복구 git checkout -- (파일이름) - 완전히 원상복구
Branch 에서 소스파일 생성 및 수정
·
Computer Science/git&github
" 같은 폴더 다른 세상" - branch에서 뭘하든 master에는 적용이 되지 않음 - 분할된 작업을 진행할 수 있음! - 즉, Git을 쓰는 이유가 됨 1. Branch 생성 git checkout -b (branch 이름) # git checkout -b fix-mnist - 작업의 명칭으로 branch 생성해주는 것이 좋음 2. 폴더 생성 및 수정작업 hello.txt를 만들고 commit 해보면.. 3. 브랜치를 master branch로 변경하고 확인해보면 - hello.txt는 없는 것을 확인할 수 있음 4. 브랜치 삭제 - master 브랜치에서 진행 git branch -D fix-mnist 1. 브랜치 생성 2. 수정할 파일 확인 3...
BS Kwak
'Computer Science' 카테고리의 글 목록