여니의 취준 준비 253

[Git] Git 사용법 및 명령어 총정리

[지역 저장소 -> 원격 저장소(깃허브)] -> 지역 저장소에 새 프로젝트 생성 -> git init 명령어로 해당 프로젝트를 깃 지역 저장소로 지정 -> git add 명령어로 수정한 파일을 스테이징 영역으로 옮김 -> git commit 명령어로 지역 저장소에 저장하게 된다. -> git push 명령어로 변경 사항을 원격 저장소에 반영한다. [1] 지역 저장소에 커밋 등록하기 1. 작업 폴더로 이동하기 : cd cd 경로 2. 해당 프로젝트를 깃 지역 저장소로 지정 : git init git init Initialized empty Git repository in /Users/.../.git/ > .git 폴더가 생성되었고, 이제 이 프로젝트는 깃으로 소스 코드 버전 관리가 된다. 폴더 앞에 점이 ..

[10282] 해킹 in python

> 다익스트라 해킹된 컴퓨터는 3번 2 -> 1, 2초 3 -> 1, 8초 3 -> 2, 4초 2번 컴퓨터가 1번 컴퓨터에 의존하고 있고, 3번 컴퓨터가 1번 컴퓨터에 의존하고 있으며 3번 컴퓨터가 2번 컴퓨터에 의존하고 있다. computer[부모]=[(자식1,해킹시간1),(자식2,해킹시간2)...] computer[1]=[(2,2),(3,8)] computer[2]=[(1,2)] computer[3]=[] 3번 컴퓨터가 해킹된다.현재 시간은 0초 [지금 시간 + 해킹에 걸리는 시간] from collections import deque t = int(input()) for _ in range(t): n, d, c = map(int, input().split()) # n= 컴퓨터 개수, d= 의존성 개..

[3020] 개똥벌레 In python

누적합으로 먼저 접근하여 코드를 작성했다. 원하는 답이 나와서 아싸! 이러고 백준에 제출을 했는데 아니.. 시간초과요 .. ? python3로 했다가 시간초과가 떠서 pypy3로 돌려봤다. 응 역시 안된다.. ㅎ 똑같이 시간초과가 떠서 좀 고민하다가 결국 구글링.. n, h = map(int, input().split()) array = [int(input()) for _ in range(n)] # 짝수 - 석순, 홀수 - 종유석 answer = [0 for _ in range(h)] for idx, now in enumerate(array): if idx % 2 == 0: # 석순 for i in range(0, now): answer[i] += 1 continue else: # 종유석 for i in..

[9084] 동전 In python

> dp 윽.. 너무 싫어하는 dp 문제다 ㅠㅠ 이 문제는 동전의 종류가 주어지고 주어진 금액을 만드는 모든 방법을 세서 출력하는 문제다. 동전의 종류 2, 3, 5원 목표 금액 10원 위 예시의 과정을 풀어보기 1 2 3 4 5 6 7 8 9 10 2원 0 1 0 1 0 1 0 1 0 1 3원 0 1 0+1 1+0 0+1 1+1 0+1 1+1 0+2 1+1 5원 0 1 1 1 1+1 2+0 1+1 2+1 2+1 2+2 총 4가지의 방법이 있다. 위 과정을 dp 방식으로 코드를 작성하면 아래와 같다 for i in range(int(input())): n = int(input()) coins = list(map(int, input().split())) m = int(input()) dp = [0 for ..

[14891] 톱니바퀴 in python

> 구현 > 시뮬레이션 처음에는 회전하는 톱니바퀴의 번호에 따라 연산을 다르게 해야 하는 줄 알았다. 그래서 회전하는 톱니바퀴가 1번이면 오른쪽만 쭉 확인하고 4번이면 왼쪽 톱니바퀴만 확인하고 둘다 아니면 왼쪽 오른쪽 모두 확인을 해야하는데 이렇게 하게 되면 연산이 너무 복잡해질 것 같아서 다른 방법을 강구해보았다 최종적으로 생각한 방법은 해당 톱니바퀴의 왼쪽과 오른쪽을 각각 확인하는 거다 회전하는 톱니바퀴의 번호에 따라 나누지않고! 회전하는 해당 톱니바퀴의 왼쪽에 있는 톱니바퀴를 회전시킨다. 오른쪽에 있는 톱니바퀴를 회전시킨다. 재귀함수를 이용해서 왼쪽, 오른쪽에 있는 톱니바퀴를 탐색한다. from collections import deque gear = [deque(map(int, input())) ..

[1914] 하노이 탑 in python

> 재귀함수 n=3일 경우 1번 초기값을 제외한 7번의 과정을 통해 하노이 탑을 수행한다. 기둥은 총 3개 f , m , e 순서로 나열되어 있다. 우리는 f 에 있는 원판을 e로 옮겨야한다. 여기서 신경써야 할 조건은 작은 원판이 큰 원판 아래에 있을 수 없다는 것. 이동 횟수가 최소가 되어야 한다는 점. 아래 그림처럼 하나하나 조건을 다 나눠줘야하나 생각했다. 왜 알고리즘 문제를 풀때마다 세부적으로 세세하게 생각을 하는지 ㅠㅠ 큰 틀을 바라봐보기 위해 노력하였다. 그랬더니 맨 아래에 있는 가장 크기가 큰 원판을 제외한 나머지 원판이 m 위치의 기둥에 있어야 하고 f 기둥에 남아있는 원판이 e 기둥으로 옮겨져야 한다. 마지막으로 m 기둥에 있는 원판이 e 기둥으로 옮겨지면 끝! n=3 hanoi(3,1..

[2346] 풍선 터뜨리기 in python

> 자료구조 > 덱 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 처음 떠올렸던 생각은 array의 값을 하나씩 지워주면 이미 터뜨린 풍선을 따로 뛰어넘는 로직을 만들어줄 필요가 없을 것 같았다. 그래서 풍선을 터뜨리는 순간 해당 풍선은 배열에서 값이 사라지게끔 했는데 이렇게 하니까 인덱스 번호를 어떻게 남겨야할지 고민이었다. 연산으로 할 수 있는지 이것저것 갖다 붙여봤는데 도저히 안돼서 결국,, 인덱스 리스트를 하나 새로 ..

[15961] 회전 초밥 in python

https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net > 투 포인터 > 슬라이싱 윈도우 윽.. 이 문제 간단해보였는데 전혀 아니었다! 혽자선 도저히 못 풀 것 같아서 결국 고수님들의 풀이를 살펴보았다. 그래도 이해가 되지 않아서 계속 그림을 그려가며 이해하기 위해 노력했다. 일단 코드는 아래와 같다. 어떤 코드에서는 딕셔너리를 이용하라고 하는데 나는 cache라는 리스트를 이용하였음. n, d, k, c ..

[2688] 줄어들지 않아 In python

> dp문제 으윽 dp문제 너무 시러.. ㅠ..ㅠ 그래도 좀전에 풀었던 문제들이 dp였어서 그나마 내 기준에서는 쉽게 풀었다!! n=1일때 -> 총 2가지 0, 1 n=2일때 -> 총 55가지 00, ... 09 : 10 11, .... 19 : 9 22, .... 29 : 8 33, ... 39 : 7 44, ... 49 : 6 55, ... 59 : 5 66, ... 69 : 4 77, ... 79 : 3 88, ... 89 : 2 99 : 1 1+2+...+10 = 55 n=3일때 -> 220가지 000 > 55가지 00, ... 09 11, ... 19 ... 100 > 45가지 11, ... 19 22, ... 29 33, ... 39 200 > 45-9=36가지 300 > 36-8=28가지 4..

[5582] 공통 부분 문자열 in python

> dp 문제 두 문자열의 공통 부분을 찾는 문제였다. 이 문제는 다이나믹 프로그래밍을 이용하여 구할 수 있다. a 문자열이 ADABRA b 문자열이 ECADADABR 이라고 하면 가장 긴 공통 부분 문자열은 ADABR이다. 즉 길이는 5가 된다. 이를 구하려면 아래와 같이 총 6개의 리스트를 필요로 함! 저번에 풀었던 기타리스트 1495번 문제와 비슷하다. https://eboong.tistory.com/449 [1495] 기타리스트 in python > dp (다이나믹 프로그래밍) dp문제는 너무너무 어렵다... 실버1이지만 실버1 같지 않은 문제.. ㅠ.ㅠ 열심히 더 노력하자! dp로 해야해서 리스트를 도대체 어떻게 만들라는건가 햇더니 dp 리스트가 eboong.tistory.com E C A D ..