https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(wallpaper): board = [] n = len(wallpaper) m = len(wallpaper[0]) for i in range(n): board.append(list(wallpaper[i])) lx = n ly = m rx = 0 ry = 0 for i in range(n): for j in range(m): if board[i][j] == "#": lx =..
코테
https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net dp[x][y] 를 (x, y)의 좌표에서의 최대 이동횟수라 했을 때 dp[x][y] = 1 + max(dp[x - 1][y], dp[x + 1][y], dp[x][y-1], dp[x][y+1] ) // 1+ max(상하좌우) 라고 할 수 있다, #include #include #include #include using namespace std; int N; int trees[500][..

https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 이 문제는 1 해당 칸에 대해 1번부터 다시 #include #include using namespace std; int N, r, c; int solve(int n, int cnt, int x, int y) { if (n == 1) { return cnt; } pair entry[4] = {{x, y}, {x, y + n / 2}, {x + n / 2, y}, {x + n / 2, y ..
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래의 좌표는 아래와 같다 (x, y), (x, y + n/2), (x + n/2, y), (x + n/2, y + n/2) #include #include #include using namespace std; int video[64][64]; vector ans; void printVideo(int n, int x, int y) { ans...
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net #include #include #include using namespace std; int n, c; vector vec; int binarySearch(int start, int end){ while(start = mid){ cnt += 1; cur = i; } } if(cnt < c) { end = mid - 1; }else{ start =..
https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 크루스칼 알고리즘을 이용해 풀었음 #include #include #include using namespace std; int N, M; int facA, facB; vector edges; int parent[10001]; int ans; int findParent(int x){ if(parent[x] != x){ parent[x] = ..
https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 정답코드 import sys from collections import deque import heapq dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] input = sys.stdin.readline N,M,Fuel = map(int, input().split()) # 1: wall 2: 승객 3: taxi board = [] for i..
https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 헤멨던 부분: 1. "파이어볼 질량의 합"을 출력해야 하는데 파이어볼의 갯수를 구하고 있었다. 2. 명령의 2번 과정에서 파이어볼들이 나누어지고 이동하는 줄 알았음 느낀점: 예제의 출력이 왜 그렇게 나오는 지 생각하고 풀어야겠다. 예제 설명 첫 명령의 1번 과정 이후 (각 (m, v, d)는 질량 m, 속력 v, 방향 d인 파이어볼을 의미함) [] [] [(..