목록분류 전체보기 (234)
honey_pot
어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행한다. 단, 두 번째 연산은 N이 k로 나누어 떨어질 때만 선택할 수 있다. N에서 1을 뺀다. N을 K로 나눈다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하라 n, k = map(int, input().split()) result = 0 # N이 K 이상이라면 K로 계속 나누기 while n >= k: # N이 K로 나누어 떨어지지 않는다면 N에서 1씩 빼기 if n % k != 0: n -= 1 result += 1 # K로 나누기 else: n //= k result += 1 print(result) n, k = map(int, input().split()) r..
여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는다. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 입력조건 첫째 줄에 숫자 카드들이 놓인 행의 개수 N과 열의 개수 M이 공백을 기준으로 하여 각각 자연수로 주어진다. (1
# 500원, 100원 ,50원 ,10원으로 거스름돈 N원을 줄 때, 거슬러줘야 할 동전의 최소 개수를 구하기 n = int(input()) count = 0 # 큰 단위의 화폐부터 차례대로 확인 coins = [500, 100, 50, 10] for coin in coins: count += n//coin # 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기 n %= coin print(count) 화폐의 종류만큼 반복을 수행한다. 화폐의 종류가 K개라고 할 때 시간 복잡도는 O(K) 거스름돈 문제가 그리디 알고리즘으로 해결되는 이유는 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문이다. => 가장 큰 단위의 화폐부터 가장 작은..
이 문제에서 큰 수의 법칙이란 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만든다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 특징이다. 예를 들어 순서대로 2,4,5,4,6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정한다. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과 6+ 6+6+5+6+6+6+5인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 예를 들어 순서대로 3,4,3,4,3으로 이루어진 배열이 있을 때 M이 7이고, K가 2이라고 가정하자. 이 경우 두 번째 원소에 해당하는 4와 네 번째 ..
.git이 있는 폴더 안에 있는 폴더에 또 .git이 있는 걸 못 보고 커밋하다가.. 결국 둘다 지우고 다시 커밋한 결과... github에 업로드 한 폴더에 화살표가 생겨서 파일이 열리지 않는 현상 발생 =>git.init 시 생성되는 파일이 이미 존재하기 때문이다. 캐시파일로 존재하는 것들을 삭제한다 git rm --cached . -rf
Fork : 기존에 존재하는 다른 유저의 Remote Repository를 자신의 Remote Repository에 clone git clone : Remote Repository를 Local Repository에 clone pull request : fork를 통해 복제한 Remote Repo를 변경하거나 사용하고, contribute를 원하면 원래 repo 주인에게 contribute 요청을 보냄. 최종적으로 repo를 변경할 권한은 repo 주인에게 있으므로 push가 아닌 pull을 쓴다. pull request를 승인하고(prove) 유용하거나 충돌이 없는 경우 merge를 이용해 repository를 합친다. fork된 repo의 원래 repo의 네트워크에는 contributor로 추가된 계정..
동시에 한 프로젝트를 개발하면서 branch를 나누어 다른 것을 시도하고, 다른 branch에 있는 부분을 main branch로 합칠 때 merge 사용 origin/master 확인 : git log 브랜치 생성 : git branch 브랜치명 브랜치 삭제 : git branch -d issue1 git branch로 확인 한 현재 존재하는 브랜치들 중 * 로 표시된 브랜치는 현재 사용중인 브랜치를 의미 브랜치 switch : git checkout 변경할 브랜치명 3개의 파일 중 두개의 파일을 변경하고 커밋한다 git add + git commit -m "msg" git log로 로그를 확인한 결과 alien-plot 브랜치를 이용한 것을 확인할 수 있다. 다시 master로 브랜치를 변경하면 al..