📌 연습 중인 git branching 사이트 Learn Git Branching An interactive Git visualization tool to educate and challenge! learngitbranching.js.org 코드 이리저리 옮기기 Level 1. Cherry-pick 소개 여기까지 git의 기초를 배웠다. 커밋을 하고, 브랜치를 만들고, 소스 트리 여기저기를 돌아다녔다. 이런 개념들 만으로도 git repository의 힘을 90%이상 사용하고 개발자들이 필요로하는 작업의 대부분을 할 수 있다. 나머지 10% 기능은 복잡한 작업(or 작업중 막혔을 때) 중에 꽤 유용할 수 있다. 이제부터 볼 개념은 "작업을 여기저로 옮기기", 즉 개발자들의 언어로 "이 일은 여기에, 저 ..
전체 글
📌 연습 중인 git branching 사이트 Learn Git Branching An interactive Git visualization tool to educate and challenge! learngitbranching.js.org 다음 단계로 Level 1. HEAD 분리하기 Git의 고급기능들에 대해 더 알아보기 전에, 프로젝트를 표현하는 커밋 트리(commit tree)에서 이동할 수 있는 여러가지 방법들을 알고 넘어가자! HEAD란 현재 체크아웃된 commit을 가리킨다. 즉, 현재 작업 중인 commit이라는 뜻이다. HEAD는 항상 작업트리의 가장 최근 커밋을 가리킨다. 작업트리에 변화를 주는 git 명령어들은 대부분 HEAD를 변경하는 것으로 시작한다. 일반적으로 HEAD는 브랜치의..
SSAFY에 와서 제대로 개발 공부를 시작하면서 git도 처음으로 써봤다. Git은 버전 관리 시스템(Version Control System, VCS)으로 쉬운 버전 관리를 위해서, 개발자라면 필수적으로 다뤄야 하는 시스템이다. 1학기를 지나면서 github에 알고리즘 공부한 코드도 올려보고, 프로젝트 코드도 git에서 관리도 해보고 했지만.. 항상 쓰던 방식대로 명령어를 몇 개 외워서 쓰기만 했을 뿐 git에 대해 제대로 이해가 되어 있지도 않고 연습도 부족하다는 생각이 항상 있었어서 언젠가는 제대로 공부해야지... 하다가 2학기에 들어오면서 git branching을 연습해볼 수 있는 재밌는 사이트를 소개받았다. Learn Git Branching An interactive Git visualiza..
백준🔗 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 문제 간단 풀이 사실 오늘 DP 연습하려고 DP 분류에서 문제를 선택해서 풀기 시작했다. 그런데 문제를 읽으면서 아무리 생각해봐도 DFS밖에 떠오르지 않아서 일단 DFS로 구현해서 통과했다. DFS 구현 자체는 문제에서 주어진 상황을 그대로 따라서 구현하면 되기 때문에 어려울 것은 없는 것 같다. 현재 파이프의 방향에 따라 분류를 나누고, 이동하고자 하는 방향으로 이동 가능한지 여부를 따져서 이동한다. (배열이 벗어나지 않아야 하고..
백준🔗 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 문제 간단 풀이 오늘 들은 알고리즘 특강에서 '트라이' 자료구조에 대해 배웠다. 그래서 트라이를 연습해볼 수 있는 문제를 풀어봤다. 우선, 트라이는 문자열 집합을 관리하는 트리이다. 정점마다 알파벳이 하나씩 대응되어 들어있고, 접두사와 접미사 관련한 문제에서 많이 사용되는 자료구조라고 한다. 단어가 많을수록 앞이 겹치는 단어들이 많아지기 때문에 이를 효율적으로 탐색할 수 ..
백준🔗 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같 www.acmicpc.net 문제 간단 풀이 구현하고 나니 코드 길이는 짧은데 풀이 과정은 쉽지 않았다.. 행렬은 입력으로 주어진 순서를 바꾸면 안되기 때문에 주어진 순서에서 어떤 행렬끼리 먼저 계산할 것인지 선택만 할 수 있다. 그러나 어떤 방식으로 선택해 나가야 할 것인지, 중간중간 계산값은 어떻게 저장해야 할 지 감이 잘 오지 않았다. 어찌됐든 행렬 곱셈을 반복적으로 수행하기 때문에 dp배열을 사용해보자 생각을 했다. 처음에는 1차원 배열을 생각해서 dp[i] : i..
백준🔗 1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 간단 풀이 2023.07.03 - [알고리즘/백준] - [백준/JAVA] 1182_부분수열의 합 ☝️이 문제를 풀어보려다 감이 잘 오지 않아서 "부분수열의 합"을 먼저 풀고 왔다. 두 문제는 얼핏 보면 똑같은 문제처럼 보이지만 한 가지 다른 점이 있다. N의 범위가 최대 40으로 2배가 된 것인데 이게 어떤 의미를 가지는지 먼저 생각해 보았다. 원소가 N개인 수열은 2^N개의 부분수열을 갖는다. N이 20일 때..
백준🔗 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 간단 풀이 "1208_부분수열의 합 2" 문제를 풀려다가 감이 잘 잡히지 않아서 이 문제부터 먼저 풀어 보았다. 수열의 원소 개수인 N이 최대 20이기 때문에 부분 수열은 최대 2^20개가 있을 수 있다. 2^20 = (2^10)*(2^10) => 대략 100만 정도.. (정확한 계산값은 2^20 = 1,048,576) 하나의 부분 순열에 대해 원소의 합을 구하는 데는 최대 N만큼이 든다고 하면 최대 O(N*2^N..