본문 바로가기

전체 글

(21)
git에 hooks해보자 git git은 파일의 변경을 추적하고 여러 명의 사용자들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소스코드 관리에 주로 사용되지만, 파일의 변경사항을 추적하기 위해서도 사용된다. git hooks git hooks는 git을 사용하는데 있어서는 큰 비중을 차지하지 않지만, git을 좀 더 편리하게 사용할 수 있도록 도와준다. 예를 들어, 특정 상황에서 특정 스크립트를 실행시키거나 커밋되기 전에 린트나 스타일 룰을 검사하여 협업하면서도 동일한 퀄리티로 소스코드를 관리할 수 있도록 도와준다. git hooks는 .git/hooks에 존재한다. 이곳에 git이 넣어둔 유용한 스크립트 예제가 있다. 이 예제 스크립트에는 입력받는 값과 어떤 값인지 상세히 설명되어있다. 쉘 스크립트로만 작성할 수 있는..
[프로그래머스] level2 스킬트리 문제링크 : 코딩테스트 연습 - 스킬트리 | 프로그래머스 (programmers.co.kr) 풀이 방법 스킬트리의 순서가 선행스킬 순서와 일치하면 풀리는 문제이다. 자료구조 스택을 활용하여 스킬트리의 스킬이 선행스킬 순서와 일치하면 answer를 더하여 반환하면된다고 생각했다. 나의 풀이 풀이 확인 def solution(skill, skill_trees): answer = 0 for i in range(len(skill_trees)): k = 0 stack = [] for j in range(len(skill_trees[i])): if skill_trees[i][j] in skill: stack.append(skill_trees[i][j]) while stack: if stack[0] == skill[..
[프로그래머스] level2 완전탐색 카펫 문제링크 : 코딩테스트 연습 - 카펫 | 프로그래머스 (programmers.co.kr) 풀이 방법 카펫의 가로 길이가 세로길이보다 길어야한다. 가로 길이의 최소인 3 * 3부터 시작해야 카펫에 노란부분을 표현할 수 있다. 2중 반복문으로 통해서 가로 * 세로가 갈색과 노란색의 합이 되어야하면서 배열의 테두리가 갈색의 수와 같아야한다는 조건을 넣었다. 나의 풀이 풀이 확인 def solution(brown, yellow): answer = [] for i in range(3, brown//2): for j in range(3, i+1): if i * j == brown + yellow and 2*(i + (j - 2)) == brown: answer = [i, j] return answer
[프로그래머스] level2 완전탐색 소수찾기 문제링크 : 코딩테스트 연습 - 소수 찾기 | 프로그래머스 (programmers.co.kr) 풀이 방법 순열을 직접구현해서 풀려고 했으나 구현을 못해서 표준 라이브러리인 itertools를 사용해서 풀었다. permutations 함수를 사용해 순열을 생성하고, 생성된 순열에 대해서만 소수 판별 알고리즘을 통해 소수 인지 판별해주는 문제이다. 나의 풀이 풀이 확인 from itertools import permutations def is_prime_number(n): for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True def solution(numbers): answer = [] p = [] for i in range(1,..
[프로그래머스] level2 힙 더 맵게 문제링크 : 코딩테스트 연습 - 더 맵게 | 프로그래머스 (programmers.co.kr) 풀이 방법 처음에 큐로 구현하여 2개를 pop하여 가져와서 계산 후 넣어주고 다시 정렬해 주는 방식으로 아래와 같이 구현하였다. def solution(scoville, K): answer = 0 scoville = deque(sorted(scoville)) while min(scoville) 1: n, m = scoville.popleft(), min(scoville) else: return -1 scoville[0] = n + (m * 2) scoville = deque(sorted(scoville)) answer += 1 return answer 큐나 스택으로 구현..
[프로그래머스] level2 정렬 H-Index 문제링크 : 코딩테스트 연습 - H-Index | 프로그래머스 (programmers.co.kr) 풀이 방법 정렬을 하고 본문에 나온 문제대로 풀면 된다. 문제 자체를 이해하고 추상화하는 과정이 오래걸린다. 나의 풀이 풀이 확인 def solution(citations): answer = 0 citations = sorted(citations, reverse=True) for i in range(len(citations)): if citations[i] > answer: answer += 1 else: return answer return answer 다른 사람 풀이 풀이 확인 def solution(citations): citations = sorted(citations) l = len(citation..
코딩테스트에서 요구되는 시간복잡도 온라인 코딩테스트에서 요구하는 사항은 알고리즘의 구현도 구현이지만 제한 시간내에 문제에 대한 값을 반환하는 것이다. 제한 시간내에 프로그램을 동작시키려면 알고리즘에 대한 시간복잡도를 계산할 줄 알아야한다. 컴퓨터는 평균적으로 100,000,000개의 연산을 1초이내에 수행할 수 있기 때문에 아래와 같이 계산될 수 있다. 온라인 코딩테스트에서 요구되는 수행속도는 1~5초 정도 (절대적이지는 않음) N
[프로그래머스] level 2 정렬 - 가장 큰 수 문제링크 : 코딩테스트 연습 - 가장 큰 수 | 프로그래머스 (programmers.co.kr) 풀이 방법 처음 풀이할 때에는 모든 숫자를 문자열 형태로 변환하고, 변환된 문자열의 길이를 판단하여 길이가 더 길면서 앞 자리 숫자가 같으면 비교 후 정렬하는 방식을 사용하려고 했다. 하지만 채점할 때 예외 케이스가 있는지 통과하지 못했다. 그리고나서 다른 풀이 방법을 찾이 못하고 있을 때, 모든 자리수를 똑같이 만들어서 비교하면 된다는 힌트를 받고 풀 수 있었다. 나의 풀이 풀이 확인 def solution(numbers): answer = [] length = max([len(str(x)) for x in numbers]) numbers = [(int((str(x)*length)[:length]), len..