목록Python (123)
Koo's.Co
pathlib — Object-oriented filesystem paths Source code: Lib/pathlib.py This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which p... docs.python.org pathlib은 file system을 PosixPath 객체를 사용해 경로를 객체지향 방식으로 사용할 수 있게 해주는 모듈입니다. pathlib을 사용하면 os 모듈을 사용할 때보다 더 직관적으로 파일과 폴더에 접근할 수 있는 장점이 있습니다. ..
hstack은 두 numpy 배열이 주어질 때 배열들을 가로로 붙여주는 역할을 하는 함수입니다. 최대 3차원까지의 배열에 적용할 수 있으며 첫번째 인자로 받은 배열 뒤에 두번째 인자로 받은 배열을 가로로 붙여 반환합니다. # 1차원 배열에서의 hstack a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.hstack((a, b)) # 2차원 배열 c = np.array([[1, 2, 3], [4, 5, 6]]) d = np.array([[7, 8, 9], [10, 11, 12]]) np.hstack((c, d))
2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 풀이 위상정렬을 이용한 기본 문제입니다. 1) 진입 차수를 저장할 리스트 2) graph의 형태를 저장할 리스트 진입차수 진입 차수는 간선의 화살표를 받는 개수를 의미합니다. (도착지가 되는 횟수) 1은 0 2는 1에서부터 오므로 1 3은 1에서부터 오므로 1 4는 2와 3으로부터 오므로 2 5는 2와 4로부터 오므로 2 구하고자 하는 진입차수는 [0, 1, 1, 2, 2] 가 됩니다. 1) queue를 생성하고 진입차..
2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 풀이 위상 정렬과 dp를 이용해 풀 수 있는 문제입니다. ACM Craft 문제와 거의 동일한 문제인 것 같습니다. 먼저 위상 정렬을 이용해 각 값들의 진입 차수를 구해준 후 bfs를 사용했습니다. 작업을 하기 위해서는 선행 작업들을 모두 수행해야 하기 때문에 dp리스트를 만들어 이전 작업들 중 가장 시간이 오래 걸린 값들만 저장해줍니다. -> max를 이용해 노드에 한 번 도착할 때마다 값을 갱신! 모든 작업이 완료된 시간을 구해야하기 때문에 max를..
1. 1, 2, 3 더하기 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 풀이 새로 오는 수는 그 전의 숫자들에 각각 1, 2, 3을 더해 만들 수 있다. 4의 경우 이전 3개의 숫자에 1, 2, 3을 더해 만들 수 있다. 그러므로 구하고자 하는 점화식은 위와 같다. import sys read = sys.stdin.readline dp = [0, 1, 2, 4] + [0] * 7 for i in range(4, 11): dp[i] = dp[i-1] + dp[i-2] + dp[i-3] for _ in range(int(read())): print(dp[int(read())]) 2. 1, 2, 3 더하기 2..
16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 bfs를 사용해서 푸는 문제입니다. 문제의 조건이 많은데 하나씩 살펴보며 풀어보겠습니다. 상하좌우 이동 가능 -> directions = [(-1, 0), (0, -1), (1, 0), (0, 1)] 상어와 물고기는 크기를 갖고 있음 처음 상어 크기 = 2 -> shark_size = 2 물고기의 크기 = 1 ~ 6 상어보다 "작은" 물고기만 먹을 수 있다 상어와 크기가 "같은" 물고기는 지나갈 수 있다 상어보다 크기가 "큰" 물고기는 지나갈 수 없다..
15659번: 연산자 끼워넣기 (3) 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 풀이 이전에 있던 연산자 끼워넣기 문제와 동일하게 dfs를 사용한 문제입니다. 다른 점은 이전 문제들은 연산의 우선순위가 없고 앞에서부터 계산하는 문제였는데 이 문제는 곱셈과 나눗셈이 덧셈과 뺄셈보다 우선순위가 높다는 점입니다. 처음 문제를 풀었을 때는 이전 문제와 다르게 문자열 타입에 연산자를 합쳐서 마지막에 eval함수를 이용해 계산하는 방법을 사용했습니다. def dfs(idx, res, plus..
pandas 라이브러리에서 사용하는 함수 정리 1. 생성 import pandas as pd # Dict를 입력값으로 받는 경우 # Key는 column이 된다 df = pd.DataFrame({'a': [4, 5, 6, 7], 'b': [8, 9, 10, 11], 'c': [12, 13, 14, 15]}, index=[1, 2, 3, 4]) # List를 입력값으로 받는 경우 # 각 리스트는 row가 된다 df2 = pd.DataFrame( [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], index=[1, 2, 3, 4], columns=list('abc')) 2. 이중 인덱스 데이터프레임 # index를 MultiIndex로 설정 #..