분류 전체보기
-
문제 상황 Github Actions에서 git diff 명령어를 통해, 이전 Commit 정보 참고를 시도할 경우 다음과 같은 오류가 발생한다. 이때 입력한 branch 등의 이름이 잘못 되지 않아도, 동일한 메시지가 반복된다. git diff origin/main..origin/main^
Github Actions에서 git diff로 이전 Commit 확인하기문제 상황 Github Actions에서 git diff 명령어를 통해, 이전 Commit 정보 참고를 시도할 경우 다음과 같은 오류가 발생한다. 이때 입력한 branch 등의 이름이 잘못 되지 않아도, 동일한 메시지가 반복된다. git diff origin/main..origin/main^
2023.03.13 -
Workflows 하나 이상의 Job과 그 내부 Step에 있는 기능들을 자동화하여 관리 가능 Workflows를 실행 시키는 트리거는 Event 라고 부름 Event로는 push, pull request, fork 등 Github 내 다양한 동작들이 지정될 수 있음 .github/workflows에 저장돼 있는 yaml 파일이 바로 Workflows를 정의하는 파일임 name: Update README # workflows의 이름 on: # Event 발생 시 실행 정보 push: branches: [ "main" ] pull_request: branches: [ "main" ] Jobs Workflows에서 독립적으로 수행할 작업들을 Job이라고 부름 각 Job은 각각 다른 서버에서 독립적으로 실행되..
[Github Actions] 기본 구성 요소 파악하기Workflows 하나 이상의 Job과 그 내부 Step에 있는 기능들을 자동화하여 관리 가능 Workflows를 실행 시키는 트리거는 Event 라고 부름 Event로는 push, pull request, fork 등 Github 내 다양한 동작들이 지정될 수 있음 .github/workflows에 저장돼 있는 yaml 파일이 바로 Workflows를 정의하는 파일임 name: Update README # workflows의 이름 on: # Event 발생 시 실행 정보 push: branches: [ "main" ] pull_request: branches: [ "main" ] Jobs Workflows에서 독립적으로 수행할 작업들을 Job이라고 부름 각 Job은 각각 다른 서버에서 독립적으로 실행되..
2023.03.12 -
문제 상황 깃 작업 중에서 diff나 status로 로그를 찍어볼 때, 한글이 깨져서 나오는 경우가 있다. git diff --name-only auto-readme..origin/auto-readme
[Git] 한글 깨짐 해결하기문제 상황 깃 작업 중에서 diff나 status로 로그를 찍어볼 때, 한글이 깨져서 나오는 경우가 있다. git diff --name-only auto-readme..origin/auto-readme
2023.03.09 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 DFS를 활용한 풀이 : 시간 초과 문자 조합을 구성하기 위해서 DFS를 활용했다. 조합 구성 시, 순서를 유지하기 위해서 start 변수를 도입해 탐색 범위를 제한했다. 시간 초과가 발생했다. 풀이의 시간 복잡도는 ${n \choose k}$ 인데, n과 k가 최대 100만 까지 가능하기 때문이다. 더보기 DFS 함수의 시간 복잡도 T(dfs) = (n-k) choose (k-1) + (n-k+1) choose (k-1) + ... + n choose (k-1) = (n+1) choos..
[Python] 프로그래머스 큰 수 만들기 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 DFS를 활용한 풀이 : 시간 초과 문자 조합을 구성하기 위해서 DFS를 활용했다. 조합 구성 시, 순서를 유지하기 위해서 start 변수를 도입해 탐색 범위를 제한했다. 시간 초과가 발생했다. 풀이의 시간 복잡도는 ${n \choose k}$ 인데, n과 k가 최대 100만 까지 가능하기 때문이다. 더보기 DFS 함수의 시간 복잡도 T(dfs) = (n-k) choose (k-1) + (n-k+1) choose (k-1) + ... + n choose (k-1) = (n+1) choos..
2023.03.09 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 쿼드 압축은 매 시행 마다 압축이 가능한 지 확인하고, 불가능하다면 4개의 동일한 부분을 나눠서 다시 확인한다. 압축 시도 → 분할 후 압축 재 시도의 과정이 반복되기 때문에 재귀 함수를 활용할 수 있다. 압축의 형태를 비교하는 과정에서, 2차원 리스트 슬라이싱이 필요했다. 리스트를 2차원 슬라이싱 하려면, 다음과 같이 리스트 컴프리헨션을 사용하면된다. [row[j : j + n // 2] for row in arr[i : i + n // 2]] # (0의 개수, 1의 개수) # 재귀? ..
[Python] 프로그래머스 쿼드압축 후 개수 세기 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 쿼드 압축은 매 시행 마다 압축이 가능한 지 확인하고, 불가능하다면 4개의 동일한 부분을 나눠서 다시 확인한다. 압축 시도 → 분할 후 압축 재 시도의 과정이 반복되기 때문에 재귀 함수를 활용할 수 있다. 압축의 형태를 비교하는 과정에서, 2차원 리스트 슬라이싱이 필요했다. 리스트를 2차원 슬라이싱 하려면, 다음과 같이 리스트 컴프리헨션을 사용하면된다. [row[j : j + n // 2] for row in arr[i : i + n // 2]] # (0의 개수, 1의 개수) # 재귀? ..
2023.03.07 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 가능한 문자열을 구성하기 위한 방법으로는 순열, 백트래킹을 활용한 DFS가 있다. DFS 과정에서 각 종이(숫자)가 한 번만 활용돼야 하기 때문에 is_used 라는 변수를 활용했다. # 가능한 문자열 구성하기 def dfs(numbers, n_len, num): global cnt, is_used, num_uniq # 문자열 길이 최대일 경우 if n_len == len(numbers): return for i in range(len(numbers)): if not is_used[i]:..
[Python] 프로그래머스 소수 찾기 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 가능한 문자열을 구성하기 위한 방법으로는 순열, 백트래킹을 활용한 DFS가 있다. DFS 과정에서 각 종이(숫자)가 한 번만 활용돼야 하기 때문에 is_used 라는 변수를 활용했다. # 가능한 문자열 구성하기 def dfs(numbers, n_len, num): global cnt, is_used, num_uniq # 문자열 길이 최대일 경우 if n_len == len(numbers): return for i in range(len(numbers)): if not is_used[i]:..
2023.03.06 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 섹션이 이미 순서대로 정렬돼 있다. 그래서 앞에서부터(뒤에서부터) 차례로 칠하기만 해도 최소 덧칠 횟수가 만족된다. # N 개의 구역 (1 ~ N 라벨) # M 미터 -> 구역 초과 X # 반복해도 되지만, 최소화해야 함 # 끝에서 부터 확인하면 될 듯 -> 윈도우가 범위 안 넘어가면 색칠 # 순서 유지돼야 함 -> 윈도우 내 최소 값 보다 마지막 성분이 큰 경우 pop() def solution(n, m, section): cnt = 0 # 모든 영역을 다 칠할 때 까지 반복 while..
[Python] 프로그래머스 덧칠하기 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 섹션이 이미 순서대로 정렬돼 있다. 그래서 앞에서부터(뒤에서부터) 차례로 칠하기만 해도 최소 덧칠 횟수가 만족된다. # N 개의 구역 (1 ~ N 라벨) # M 미터 -> 구역 초과 X # 반복해도 되지만, 최소화해야 함 # 끝에서 부터 확인하면 될 듯 -> 윈도우가 범위 안 넘어가면 색칠 # 순서 유지돼야 함 -> 윈도우 내 최소 값 보다 마지막 성분이 큰 경우 pop() def solution(n, m, section): cnt = 0 # 모든 영역을 다 칠할 때 까지 반복 while..
2023.03.06 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 가로 - 세로 길이가 정해져 있기 때문에 DP로 풀 수 있었던 문제다. N 번째 위치에서 가능한 타일링은 가로가 1인 경우(N - 1)와 가로가 2인 경우(N - 2), 총 2가지 이다. 이를 점화식으로 나타내면 아래와 같다. DP[n] = DP[n - 1] + DP[n - 2] 추가로 오버 플로우를 방지하기 위해서, 연산 중간마다 나머지 연산을 진행했다. 이는 나머지 연산의 분배 법칙을 통해 가능하다. # (n x 2) 바닥 채우기 # n 번째 바닥 def solution(n): # 경..
[Python] 프로그래머스 2 x n 타일링 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 가로 - 세로 길이가 정해져 있기 때문에 DP로 풀 수 있었던 문제다. N 번째 위치에서 가능한 타일링은 가로가 1인 경우(N - 1)와 가로가 2인 경우(N - 2), 총 2가지 이다. 이를 점화식으로 나타내면 아래와 같다. DP[n] = DP[n - 1] + DP[n - 2] 추가로 오버 플로우를 방지하기 위해서, 연산 중간마다 나머지 연산을 진행했다. 이는 나머지 연산의 분배 법칙을 통해 가능하다. # (n x 2) 바닥 채우기 # n 번째 바닥 def solution(n): # 경..
2023.03.04 -
문제 상황 코딩 테스트 문제를 풀다 보면, 다음과 같은 조건이 있을 때가 있다. 경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요. 위와 같은 조건은 숫자가 너무 커져 발생하는 오버 플로우를 방지하기 위함이다. 하지만 최종 값에만 나머지 연산을 적용할 경우 여전히 오버 플로우가 발생할 때가 있다. # (n x 2) 바닥 채우기 # n 번째 바닥 def solution(n): # 경우의 수 저장 DP = [1, 2] for i in range(2, n): DP.append(DP[i - 2] + DP[i - 1]) return DP[n - 1] % 1000000007 # 최종 값에만 나머지 연산을 적용할 경우 이럴 땐 연산 과정 중간 중간 나머지 ..
Overflow(오버 플로우) 방지하기 : 나머지 연산 활용문제 상황 코딩 테스트 문제를 풀다 보면, 다음과 같은 조건이 있을 때가 있다. 경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요. 위와 같은 조건은 숫자가 너무 커져 발생하는 오버 플로우를 방지하기 위함이다. 하지만 최종 값에만 나머지 연산을 적용할 경우 여전히 오버 플로우가 발생할 때가 있다. # (n x 2) 바닥 채우기 # n 번째 바닥 def solution(n): # 경우의 수 저장 DP = [1, 2] for i in range(2, n): DP.append(DP[i - 2] + DP[i - 1]) return DP[n - 1] % 1000000007 # 최종 값에만 나머지 연산을 적용할 경우 이럴 땐 연산 과정 중간 중간 나머지 ..
2023.03.04 -
원인 Python 3.8 이후 부터, 윈도우는 타 운영체제랑 다른 EventLoop를 기본 값으로 활용한다고 한다. 타 OS 기본 : SelectorEventLoop 윈도우 기본 : ProactorEventLoop 해결 방법 아래 코드를 입력해, 윈도우의 EventLoop를 SelectorEventLoop로 변경하면 된다. asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) 주의 사항 윈도우는 I/O Completion Ports를 활용해 비동기 처리 하기 때문에, SelectorEventLoop로 변경 시 아래와 같은 제약이 있다고 한다. 제약이 문제가 될 경우, Trio 라는 별도의 라이브러리를 사용하는 것이 좋다고 한다. ..
asyncio의 RuntimeError: Event loop is closed 오류 해결 방법원인 Python 3.8 이후 부터, 윈도우는 타 운영체제랑 다른 EventLoop를 기본 값으로 활용한다고 한다. 타 OS 기본 : SelectorEventLoop 윈도우 기본 : ProactorEventLoop 해결 방법 아래 코드를 입력해, 윈도우의 EventLoop를 SelectorEventLoop로 변경하면 된다. asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) 주의 사항 윈도우는 I/O Completion Ports를 활용해 비동기 처리 하기 때문에, SelectorEventLoop로 변경 시 아래와 같은 제약이 있다고 한다. 제약이 문제가 될 경우, Trio 라는 별도의 라이브러리를 사용하는 것이 좋다고 한다. ..
2023.02.28 -
사용 방법 git log --follow --patch 파일명 실행 결과 git log --follow 파일명 만 활용한 경우 파일 이름이 어떻게 변했는지 확인할 수가 없다. git log --follow 2_바이러스.py >> commit d2b40f8af3740a54298d2212a91e442ba84592df Author: ~ Date: Wed Feb 15 21:34:14 2023 +0900 [Rename] : solved, retry 폴더로 구분 commit e4929ce94ceae2f22d77f2a4ff0a21cff117691a Author: ~ Date: Tue May 17 16:52:44 2022 +0900 Add : 2_바이러스.py git log --follow --patch 파일명 을 활..
[Git] 히스토리에서 파일 이름 변경 정보 확인하기사용 방법 git log --follow --patch 파일명 실행 결과 git log --follow 파일명 만 활용한 경우 파일 이름이 어떻게 변했는지 확인할 수가 없다. git log --follow 2_바이러스.py >> commit d2b40f8af3740a54298d2212a91e442ba84592df Author: ~ Date: Wed Feb 15 21:34:14 2023 +0900 [Rename] : solved, retry 폴더로 구분 commit e4929ce94ceae2f22d77f2a4ff0a21cff117691a Author: ~ Date: Tue May 17 16:52:44 2022 +0900 Add : 2_바이러스.py git log --follow --patch 파일명 을 활..
2023.02.23 -
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 단어의 최대 길이가 5 이하라서, 가능한 모든 단어를 모아 미리 사전을 구성해도 시간 초과가 발생하지 않을 것이라고 판단했다. 경우의 수 : $6^5 = 7776$ 단어 사전을 구성하기 위해서 중복 순열 product를 이용했고, 중복을 방지하기 위해서 set 자료형을 활용했다. # 길이 5 이하의 단어 # 중복 순열 만들어도 시간 초과 X from itertools import product def solution(word): word_dic = set() for p in product..
[Python] 프로그래머스 모음사전 풀이문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 단어의 최대 길이가 5 이하라서, 가능한 모든 단어를 모아 미리 사전을 구성해도 시간 초과가 발생하지 않을 것이라고 판단했다. 경우의 수 : $6^5 = 7776$ 단어 사전을 구성하기 위해서 중복 순열 product를 이용했고, 중복을 방지하기 위해서 set 자료형을 활용했다. # 길이 5 이하의 단어 # 중복 순열 만들어도 시간 초과 X from itertools import product def solution(word): word_dic = set() for p in product..
2023.02.23