일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Kotlin
- 알고리즘
- 클린코드
- html
- 해슁
- codecademy
- 순환
- CleanCode
- Web
- CSS
- inflearn
- SWEA
- 자바
- DP
- DFS
- Color
- BFS
- javascript
- Spring
- java
- algorithm
- 구현
- 다이나믹 프로그래밍
- android
- 프로그래머스
- 정렬
- 검색트리
- SQL
- 코딩테스트
- front-end
- Today
- Total
목록Algorithm/BAEKJOON (47)
깡뇽
- 문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. - 입력N : 정점 (1~1,000)M : 간선 (1~1,000)V : 시작노드 - 풀이DFS는 인접 행렬을 활용한 재귀 방식으로 풀었다.BFS는 queue를 사용해서 풀었다.#include #include #include using namespace std;int arr[1001][1001] = { 0, };int visited[1001] = { 0, };void dfs(int start) { cout q; q.push(start); whi..

- 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다. 이제 두 번째 사진처럼 지역에 많은 비가 내려서 높이가 4 이하인 모든 지점이 물에 잠겼다고 하자. 이 경우에 물에 잠기는 지점을..
17142번 연구소3 출처 : https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net

폴리오미노 : 1x1 크기 정사각형 여러 개 이어 붙인 도형 - 정사각형은 서로 겹치면 안 됨. - 도형은 모두 연결되어야 함. - 정사각형의 변끼리 연결되어 있어야 함. (꼭짓점끼리만 맞닿아 있으면 안 됨.) 4개를 이어 붙이면 "테트로미노" -> 5가지 NxM 크기 종이 위에 테트로미노 하나 놓을 때, 종이 1x1 크기의 칸 하나에는 정수가 쓰여져 있음. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성해라. 테트로미노는 반드시 한 정사각형이 한 칸을 포함하도록 놓고, 회전이나 대칭 가능. - 입력 1줄 : 종이의 세로 크기 N, 가로 크기 M 2~N줄 : 종이에 쓰여 있는 수. ( i번째 줄의 j번째 수) - 출력 테트로미노가 놓인 칸에 쓰인..
N 고민) r, c, k = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(3)] def r_cal(arr): cnt = [[0] * 101 for _ in range(len(arr))] for i in range(len(arr)): for num in arr[i]: cnt[i][num] += 1 temp = [] for x in range(len(arr)): for y in range(101): if cnt[x][y] != 0: if temp == []: temp.append(y) temp.append(cnt[x][y]) if arr = if(len(arr) > 100): arr = arr[99:] retu..
NxM 크기의 사무실. K개의 CCTV (5종류 / 1번 CCTV는 한 쪽 방향만 감시, 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향, 3번은 직각 방향, 4번은 세 방향, 5번은 네 방향) CCTV는 벽을 통과할 수 없으며, CCTV가 감시할 수 없는 영역은 사각지대. CCTV는 항상 90도 방향으로 회전할 수 있으며, 감시하려는 방향이 가로 또는 세로 방향임. - 입력 1줄 : 사무실의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 8) 2~N줄 : 사무실 각 칸의 정보 (0 : 빈칸, 6 : 벽, 1~5 : CCTV) *CCTV는 8개 이하 - 출력 사각 지대의 최소 크기 고민) dfs에서 재귀로 돌리면서 확인하는 걸텐데.. 해당 가로 또는 세로를 어떻게 ..

NxM 크기 지도 오른쪽 : 동쪽, 위쪽 : 북쪽 지도의 좌표 (r, c) : r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수 주사위는 지도 (x, y)위치에 놓여있으며, 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태. 가장 처음 주사위 모든 면에 0이 적혀져 있음. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사된다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사되며, 칸에 쓰여 있는 수는 0이 된다. - 입력 1줄 : 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20) , 주사위를 놓을 곳의 좌표 x, y (0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1) , 명령의 개수 K (1 ≤ K..

NxM 크기 배열 A(각 행에 있는 모든 수의 합 중 최솟값). ex) 배열A == 4 (1행 합 == 6 / 2행 합 == 4 / 3행 합 == 15) 회전 연산 (r, c, s) -> 가장 왼쪽 윗 칸 == (r-s, c-s) / 가장 오른쪽 아랫 칸 == (r+s, c+s) 시계 방향 회전 (r, c) == r행 c열 ex) 배열A == 6x6 , 회전 연산 == (3, 4, 2) - 입력 1줄 : 배열 A의 크기 N, M, 회전 연산의 개수 K 2~N줄 : A[i][j] K줄 : r, c, s - 출력 배열 A의 값의 최솟값 17406번 배열 돌리기4 방법1) 배열돌리기1과 같이 list를 만든 후에 인덱스로 직접 접근 from itertools import permutations from cop..
NxM 크기 배열. R번 연산. 1번 : 상하 반전 2번 : 좌우 반점 3번 : 오른쪽으로 90 회전 4번 : 왼른쪽으로 90 회전 * 5 & 6번 연산 수행 시, N/2*M/2인 4개의 부분 배열로 나누어야 함. 5번 : 1->2 / 2->3 / 3->4 / 4->1 6번: 1->4 / 4->3 / 3->2 / 2->1 16935번 배열 돌리기3 n, m, r = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] operation = list(map(int, input().split())) def cal1(): temp_board = [[0] * m for _ in range(n)] for i in ..
16926번 배열 돌리기1와 문제 동일. But, 조건 변경 - 제한 2 ≤ N, M ≤ 300 1 ≤ R ≤ 10^9 min(N, M) mod 2 = 0 1 ≤ Aij ≤ 10^8 => R의 최댓값이 더 커짐 16927번 배열 돌리기2 출처 : https://www.acmicpc.net/problem/16927 16927번: 배열 돌리기 2 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net

NxM 크기 배열 반시계 방향 돌리기 ex) 배열 2번 회전 - 입력 1줄 : N, M, R (R은 회전의 수) 2~N줄 : 배열 A의 원소 Aij - 출력 배열을 R번 회전시킨 결과 - 제한 2 ≤ N, M ≤ 300 1 ≤ R ≤ 1,000 min(N, M) mod 2 = 0 1 ≤ Aij ≤ 10^8 16926번 배열 돌리기1 n, m, r = map(int, input().split()) a = [] new_a = [[0]*m for i in range(n)] for _ in range(n): a.append(list(map(int, input().split()))) for i in range(n): for j in range(m): rest_i = (i+r) % n rest_j = (m+r) %..
(r, c) : r행 c열 공기청정기는 2행을 차지하며, 항상 1번 열에 설치. 공기청정기가 없는 칸 (r, c)에는 미세먼지가 Ar,c 만큼 존재. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산된다. 인접한 방향에 공기청정기가 있거나, 칸이 없으면 그 방향으로는 확산이 일어나지 않는다. 확산되는 양은 Ar,c/5이고 소수점은 버린다. (r, c)에 남은 미세먼지의 양은 Ar,c - (Ar,c/5)×(확산된 방향의 개수) 이다. 공기청정기가 작동한다. 공기청정기에서는 바람이 나온다. 위쪽 공기청정기의 바람은 반시계방향으로 순환하고, 아래쪽 공기청정기의 바람은 시계방향으로 순환한다. 바람이 불면 미세먼지가 바람의 방향대로 ..