2024년은 내가 좋아하는 것이 무엇인지, 어떤 삶을 살아가고자 하는지, 어떤 개발자가 되고 싶은지, 나와 잘 맞는 사람과 아닌 사람은 어떤 특성을 가졌는지, 어떤 상황에서 스트레스를 받고 어떻게 푸는지 등등.. 나에 대한 것을 하나씩 채워나갈 수 있는 해였다. 소중했던 한 해를 정리하며 어떤 일들이 있었는지 돌아보고자 한다. 상반기1월 2일에 싸피에 입과했고, 스타트캠프를 거쳐 반 배정을 받았다. 아는 사람 한 명 없이 20명 가량의 사람이 새로운 사람인 경우는 대학교 신입생 때를 제외하고는 없었기 때문에 초반에는 힘들었다. 하지만 매일 9시부터 6시까지 함께 수업을 듣다 보니 빠르게 친해지고 적응할 수 있었다. 싸피의 수업 내용은 프론트 부분을 제외하고는 모두 아는 내용이었다. 애초에 싸피를 들어간 ..
submodule을 사용해 한 프로젝트의 백엔드와 프론트 레포를 한 곳에서 관리했는데 fetch를 할 경우에 빈 파일이 가져와져서 submodule을 main 브랜치 기준으로 update 하는 방법을 찾아봤다. 먼저 submodule 상위 폴더에서 init 작업을 수행해준다.$git submodule init 이후 상위 폴더에 있는 .gitmodules에 fetch할 branch를 명시해주면 된다.[submodule "Repo name"] path = 폴더명 url = 깃 주소 branch = main 마지막으로 submodule을 update 해주면 제대로 fetch가 된다.$git submodule update --remote
문제https://www.acmicpc.net/problem/26086 26086번: 어려운 스케줄링첫째 줄에 업무의 고유번호의 범위 제한 $N$과 명령 횟수 $Q$, $k$가 주어진다. ($1\leq N,Q \leq 100\,000,\ 1\leq k \leq$ '0번 명령의 등장 횟수') 둘째 줄부터 $Q$개 줄에 걸쳐 명령에 대한 정보가 주어진다.www.acmicpc.netstack 구조의 스케쥴러를 이용해 명령을 수행하고 k번째로 처리할 업무를 찾는 문제였다. 명령은 다음과 같다.0 p : 스케줄러의 맨 앞에 번호 p인 업무를 추가한다.1 : 스케줄러의 업무를 p 기준으로 오름차순 정렬한다.2 : 스케줄러의 업무 처리 순서를 뒤집는다.명령 횟수는 100000, 시간 제한은 1초였다. 문제 풀이명령 ..
문제https://www.acmicpc.net/problem/31476 31476번: :blob_twintail_thinking:첫째 줄에는 양갈래 굴의 방 중 가장 깊은 곳의 깊이 $D(1 \le D \le 12)$와 파손된 길목의 수 $N(0 \le N \le 2^D-2)$, 각 블롭 세력이 기본적으로 탐색하는 시간인 $U(1 \le U \le 100)$와 양갈래 블롭들이 갈라www.acmicpc.net트리를 레벨 순회, 중위순회 하는 문제였다. 양갈래 블롭같은 레벨은 가장 오래 걸린 시간이 소요된다.이때, 분기할 때마다 소요 시간이 T만큼 증가한다 (U+T, U+2*T, U+3*T...)포니테일 블롭중위순회 하면서 갔다가 돌아오는 길에도 탐색 시간이 U만큼 소요..
xml 파일에서 다운로드가 안돼서 모든 곳이 다 빨간 밑줄이 쳐졌었다. 실행은 돼서 그냥 보이는 오륜가? 하고 넘겼는데 어느 순간부터 실행이 잘 안됐다.. Window의 Preferences에서 XML(Wild Web Developer)에 들어가면 Download 선택하는 것이 있는데 체크가 해제되어 있었다. 이를 체크하니 잘 다운받아졌고 빨간 밑줄이 사라졌다. 휴~
문제 https://www.acmicpc.net/problem/24461 24461번: 그래프의 줄기 그래프에서 사이클이란, 한 정점에서 같은 정점까지, 반복되는 간선이 없으며, 길이가 $0$이 아닌 경로이다. 사이클이 존재하지 않는 그래프가 주어진다. 우리는 이 그래프의 정점 중에서 연결된 www.acmicpc.net 가장자리 정점을 '동시에' 없애는 행동을 가장자리 정점이 2개 이하로 남을 때까지, 즉 일직선이 될 때까지 반복하고 남은 일직선의 정점을 오름차순으로 출력하는 문제였다. 문제 풀이 그래프를 생성하면서 in, out 배열을 만든다. 초기 가장자리 정점 queue를 생성한다. in, out이 모두 1인 정점이 가장자리 정점이 된다. 가장자리 정점 제거 queue에 담긴 정점을 제거한다. 제거..
문제 https://www.acmicpc.net/problem/9252 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 두 수열의 공통 부분 수열 중 가장 긴 것을 찾는 문제였다. 문제 풀이 dp를 사용해 풀었다. dp 점화식을 말에서 식으로 바꾸는 것이 조금 헷갈렸지만 표를 그려보니 바로 이해가 됐다. 주어진 예시를 이용해 dp 배열을 만들면 위와 같은 모양이 된다. 0행 1열은 AC와 C의 LCS 길이, 1행 2열은 ACA와 CA의 LCS 길이가 된다. 그 ..
문제 https://www.acmicpc.net/problem/15573 15573번: 채굴 첫째 줄에 N, M, K가 주어진다. (1 ≤ N, M ≤ 1000, 1 ≤ K ≤ N × M) 둘째 줄부터 맨 위의 광물들부터 순서대로 N줄 동안 M개의 광물의 강도 Si, j가 주어진다.(i = 1, 2, ..., www.acmicpc.net 채굴기의 성능 D보다 강도가 약하고, 공기와 맞닿은 광물만 채굴할 수 있을 때 K 이상을 채굴할 수 있는 최소 강도 D를 구하는 문제였다. 문제 풀이 D가 최대 1000000이고, map의 크기가 최대 1000000인 문제였기 때문에 완전 탐색이 불가능했다. 이전에 이와 비슷한 문제를 푼 적이 있어서 바로 이분탐색으로 D를 구하는 방법을 생각했다. 각 D마다 bfs를 진..