목록알고리즘 (72)
짱이 될거야

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..

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..

https://www.acmicpc.net/problem/25083 25083번: 새싹 아래 예제와 같이 새싹을 출력하시오. www.acmicpc.net 문제 아래 예제와 같이 새싹을 출력하시오. 정답 코드 print(' ,r\'"7') print('r`-_ ,\' ,/') print(' \. ". L_r\'') print(' `~\/') print(' |') print(' |') 풀이 python 문법에서 '' 안에 ' 기호를 넣을 때는 \ 기호를 붙인다. (ex. ' \' ') "" 안에 " 기호를 넣을 때는 \ 기호를 붙인다. (ex. " \" ")