목록분류 전체보기 (120)
짱이 될거야
https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 이 문제에서 필요한 것은 lambda였다. arr.sort(key=lambda x: x[0])을 쓰면 각 행의 첫 번째 열을 기준으로 오름차순 정렬되기 때문에 [3, 4]가 [3, 3]보다 먼저 나오게 된다. 먼저 첫 번째 열을 기준으로 오름차순 하고, 이후 두 번째 열을 기준으로 오름차순을 한 번 더 하고 싶다면, arr.sort(key=la..
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net def check_chess(arr): cnt1 = cnt2 = 0 # 맨 첫번째 값이 W로 시작하는 경우 for i in range(8): for j in range(8): if i % 2 == 0: if (j % 2 == 0 and arr[i][j] == "B") or (j % 2 and arr[i][j] == "W"): cnt1 += 1 else: if (j % 2 == 0 and a..
1. Excel 파일 읽어오기 먼저, VSCode에 python 파일을 하나 만들고, pandas library를 import 한다. import pandas as pd 이후, 읽어올 엑셀 파일 경로를 변수에 저장해둔다. 매번 경로를 적지 않고 변수를 사용하면 훨씬 편리하다. # 읽어올 엑셀 파일 지정 filename = './data.xlsx' 이제 엑셀 파일을 읽어와야 하는데, pandas의 read_excel을 활용한다. # 엑셀 파일 읽어 오기 df = pd.read_excel(filename, engine='openpyxl') 이 때 openpyxl이 없다는 에러가 뜰 수 있는데, pip install openpyxl을 하면 해결된다. 2. Excel 파일에 열 추가하기 엑셀 파일에 열을 추가하..
https://www.acmicpc.net/problem/22864 22864번: 피로도 첫 번째 줄에 네 정수 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. 맨 처음 피로도는 0이다. www.acmicpc.net # A: 피로도/시간, B: 일/시간, C: -피로도/시간, M: 최대 피로도 A, B, C, M = map(int, input().split()) piro = 0 # 피로도 work = 0 # 하루 최대 할 수 있는 일의 양 hr = 0 # 일한 시간 # 하루는 24시간 while hr M: # 이미 피로도가 초과한 상태이면 번아웃 if piro > M: work = 0 ..
https://www.acmicpc.net/problem/1749 1749번: 점수따먹기 동주는 항상 혼자 노느라 심심하다. 하지만 혼자 놀기의 고수가 된 동주는 매일매일 게임을 개발하여 혼자놀기의 진수를 우리에게 보여준다. 어느 날 동주는 새로운 게임을 개발하였다. 바로 점 www.acmicpc.net from sys import stdin N, M = map(int, stdin.readline().split()) # N: 세로, M: 가로 arr = [list(map(int, input().split())) for _ in range(N)] # 누적합 구하기 sum_arr = [[0] * (M+1) for _ in range(N+1)] for i in range(1, N+1): for j in ran..
어떠한 행렬이 주어지고, 그의 부분행렬의 합이 최대 혹은 최소가 되는 값을 찾을 경우에는 누적합과 Prefix Sum(구간합)을 사용한다. 1. 누적합 누적합은 0부터 해당 인덱스까지의 행렬의 값들을 모두 더하는 것이다. 만약 2차원 행렬에서 (i, j) 위치의 누적합 값은 (0, 0) ~ (i, j) 인덱스의 행렬의 값을 모두 더한 것이다. 예를 들면 아래와 같다. 인덱스 0 1 2 3 4 5 행렬 값 3 2 5 2 1 2 누적합 3 5 10 12 13 15 2차원 행렬의 경우 만약 행렬이 아래와 같을 때, sum_arr[0][1] = arr[0][0] + arr[0][1], sum_arr[1][1] = arr[0][0] + arr[0][1] + arr[1][0] + arr[1][1] 과 같다. 2 1..