전체 글

전체 글

    Github autoSetupRemote 설정

    Github origin에 새로 판 브랜치를 push 하려고 하면, 아래와 같은 에러 메시지와 함께 원하는 대로 push가 안 되는 경우가 있다.fatal: The current branch test-branch has no upstream branch.To push the current branch and set the remote as upstream, use git push --set-upstream origin test-branchTo have this happen automatically for branches without a trackingupstream, see 'push.autoSetupRemote' in 'git help config'.자세하게 에러 메시지를 읽어보면, test-b..

    [프로그래머스 Lv.3] 단어 변환 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이BFS를 사용한 풀이이다. 풀고 나니 원래 보통 BFS라고 할 때 사용하는 while과 deque를 사용한 구조로 풀이되진 않았으나.. 어찌 됐든 한 단계씩 진행되는 BFS 구조를 사용하여 문제 풀이를 진행했다. 문제에 적힌 대로 주어진 단어의 한 글자씩 변환하며, 변환된 단어가 words 배열에 있는지 체크하고, 또 동시에 이전에 이미 변환을 진행했던 단어가 아닌지 확인하였다. 확인을 통과한 새로운 단어들을 모아 새로운 단계에서..

    [프로그래머스 Lv.2] 괄호 변환 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이DFS와 구현이 섞인 문제로 볼 수 있다. 흔히 볼 수 있는 DFS 문제와 다르긴 하나, 재귀를 사용해 한 문장 p의 끝까지 들어가며 특정 로직을 적용하기에 DFS 문제라고 생각한다.구현 부분은 어려운 알고리즘을 사용하는 게 아니다 보니, 문제에 주어진 대로 그저 한 단계씩 구현하면 된다. 한 단계씩 구현해 나가고, 재귀적으로 다시 실행해야 하는 부분은 DFS를 통해 진행하면 비교적 쉽게 풀 수 있다.  처음에는 p의 길이가 10..

    [프로그래머스 Lv.3] 여행경로 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이DFS를 활용한 문제이다. dictionary를 활용하여 전체 티켓들을 사용해 마치 graph와 같은 구조를 완성하고, 이를 DFS로 순회하면 된다. DFS로 순회하며, 더 이상 이동할 수 없는 경우가 되면 그 때 위치하는 공항을 answer 배열에 저장한다.다만 주의해야할 점이 있는데, 가능한 경로가 2개 이상일 땐 알파벳 경로가 앞서는 경우를 반환하라고 했기 때문에 그래프를 완성할 때 정렬이 필요하다는 점을 고려하며 구현해야 ..

    [프로그래머스 Lv.2] 타겟 넘버 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이재귀함수를 사용한 DFS를 이용한 풀이이다.재귀함수의 인자로는 숫자들을 사용하여 더하거나 빼기를 진행한 현재까지의 누적값이고, 다른 하나는 현재까지 더하기 또는 빼기에 사용한 숫자의 수이다.초기값은 누적값은 0, 사용한 숫자의 수는 0으로 하였다.종료 조건은 당연하게도 모든 숫자가 사용되었을 때, 즉 numbers 배열의 길이와 사용한 숫자의 수가 같을 때이다.또한, 종료할 때 만약 문제에서의 조건인 누적합이 타겟 넘버와 같은 경..

    Docker 환경에서의 Spring Boot Auto Reload (Hot Reload)

    평소에 인터프리터 언어인 Python과 JavaScript를 사용한 서버 개발을 주로 해왔는데, 최근에 컴파일 언어인 Java를 사용한 서버 개발을 진행할 일이 있었다. 익히 알려져있듯, Spring 앱을 띄우려고 하면 Java는 컴파일 언어이기 때문에 jar 파일을 빌드하는 과정이 따로 필요하다. 이는 주로 인터프리터 언어를 사용해왔던 필자로서는 따로 컴파일 과정을 거쳐야만 서버에 수정 사항을 반영할 수 있다는 부분에서 크게 아쉬움이 느껴졌다. 위와 같은 언어의 근본적인 차이 때문에 아래와 같은 문제가 Docker 환경에서의 개발 진행 시에 아래와 같은 문제가 있었다.인터프리터 언어인 Python 기반의 FastAPI와 JavaScript 기반의 NestJS는 로컬에서의 소스 코드 변경을 Docker ..

    [프로그래머스 Lv.2] 줄 서는 방법 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12936 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이처음에 단순하게 문제를 생각했을 때, itertools의 permutation을 활용하여 순열을 모두 생성해 두고, 여기서 k번째에 해당하는 순열을 찾는 방식으로 해결하려 하였다. 하지만 n의 최댓값인 20의 경우를 생각하여 보면, 20!이라는 어마무시한 숫자이기에 이 방법으로는 해결이 불가능하였다. 그래서 약간은 수학적인 방법을 사용해보았다. n=3일 때의 간단한 예시를 들어보겠다.[1, 2, 3], [1, 3, 2], [2, ..

    [프로그래머스 Lv.2] 스킬트리 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이스킬트리대로 스킬을 하나씩 배워나갈 때마다 해당 스킬이 선행 관계가 존재하는 스킬인 경우, 그 스킬이 순서에 맞게 배워졌는지 체크하고 만약 그렇지 않다면 이는 옳지 않은 스킬트리이므로 바로 배제하고, 스킬트리의 모든 스킬들을 모두 무사히 배웠다면 이는 올바른 스킬트리인 것이다. 즉, 스킬이 선행 관계가 존재하는 스킬인지 확인하는 로직과 순서에 맞게 배워졌는지 체크하는 로직을 코드로 구현하면 쉽게 풀 수 있는 문제이다. 먼저 스킬이..

    [프로그래머스 Lv.2] 2개 이하로 다른 비트 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수를 구하는 함수를 구현하는 문제이다.구현 문제이기에 우선 간단한 예시를 통해 규칙을 찾아야 한다. 2부터 시작하여 규칙을 찾아보겠다.2는 이진수로 10이고 2보다 크고 2와 비트가 1~2개 다른 수들 중 제일 작은 수는 이진수로 11로 3이다.3은 이진수로 11이고 3보다 크고 3과 비트가 1~2개 다른 수들 중 제일 작은 수는 이진수로 101으로 5이다.4는 이진수..

    [프로그래머스 Lv.3] 섬 연결하기 (Python)

    문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이이전에 최소 신장 트리를 그리는 문제에서 사용하였던 Union-find을 통해 구현한 크루스칼 알고리즘을 사용하여 풀이하였다. 우선 Union-find를 사용하기 위해 관련 함수들을 구현한다. 이후 크루스칼 알고리즘을 사용하여 최소 신장 트리를 그리는 작업을 수행하면 된다.먼저 각 섬 간의 건설 비용이 낮은 순서대로 정렬하여, 결과적으로 가장 최저의 비용이 나올 수 있도록 한다.다음으로..