일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해슁
- DP
- html
- algorithm
- 순환
- front-end
- 프로그래머스
- 알고리즘
- 구현
- 자바
- 검색트리
- 정렬
- javascript
- SQL
- BFS
- 다이나믹 프로그래밍
- Spring
- Web
- inflearn
- codecademy
- Kotlin
- DFS
- Color
- CSS
- SWEA
- java
- android
- 클린코드
- 코딩테스트
- CleanCode
- Today
- Total
목록분류 전체보기 (183)
깡뇽
NxN 정사각 보드 위에 몇 칸에는 사과가 있음. 보드의 상하좌우 끝에는 벽 설치. 뱀의 길이 : 1 / 뱀 처음 위치 : 맨위 좌측 / 처음 오른쪽 이동 뱀은 사과를 먹으면 길이가 늘어나고 벽 또는 자기자신과 몸을 부딪히면 게임 종료..! 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. - 입력 1줄 : 보드의 크기 N (2 ≤ N ≤ 100) 2줄 : 사과의 개수 K (0 ≤ K ≤ 100) K줄 : 사과의 위치(행, 열) *1행 1열에는 사과가 없음. 다음줄 : 뱀의 방향 변환 횟수 L (1 ≤ ..
(r, c) : r행 c열 공기청정기는 2행을 차지하며, 항상 1번 열에 설치. 공기청정기가 없는 칸 (r, c)에는 미세먼지가 Ar,c 만큼 존재. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산된다. 인접한 방향에 공기청정기가 있거나, 칸이 없으면 그 방향으로는 확산이 일어나지 않는다. 확산되는 양은 Ar,c/5이고 소수점은 버린다. (r, c)에 남은 미세먼지의 양은 Ar,c - (Ar,c/5)×(확산된 방향의 개수) 이다. 공기청정기가 작동한다. 공기청정기에서는 바람이 나온다. 위쪽 공기청정기의 바람은 반시계방향으로 순환하고, 아래쪽 공기청정기의 바람은 시계방향으로 순환한다. 바람이 불면 미세먼지가 바람의 방향대로 ..
드래곤 커브 속성 : 1. 시작점 / 2. 시작 방향 / 3. 세대 0세대 드래콘 커브 : 1인 선분 1세대 드래곤 커브 : 90도 2세대 드래곤 커브 : ... K세대 드래곤 커즈 : K-1세대 드래곤 커브를 끝 점을 기준으로 90도 시계 방향 회전 시킨 다음, 그것을 끝 점에 붙인 것 100x100인 격자 위에 드래곤 커브 N개 존재. 크기가 1x1인 정사각형의 네 꼭짓점이 모두 드레곤 커브의 일부인 정사각형의 개수를 구하자. - 입력 1줄 : 드래곤 커브의 개수 N() 2~N줄 : 드래곤 커브의 정보(x&y : 드래곤 커브의 시작점 / d : 시작 방향 / g : 세대) * 방향 : 0: x좌표가 증가하는 방향 (→) / 1: y좌표가 감소하는 방향 (↑) / 2: x좌표가 감소하는 방향 (←) /..
NxM 크기 연구소. 바이러스는 상하좌우 인접한 빈 칸으로 퍼짐 새로 세울 수 있는 벽의 개수는 3개 0 == 빈 칸, 1 == 벽, 2 == 바이러스 안전 영역의 크기의 최댓값을 구하자. - 입력 1줄 : N, M - 출력 2~N줄 : 지도의 모양(0 == 빈 칸, 1 == 벽, 2 == 바이러스) 고민) 2의 위치를 먼저 찾아두고 확산을 고려해야 하나? 아니면 전체 center에서 돌면서 2가 나왔을 때에 상하좌우를 고려해야 하나? 후자의 방법으로 구현하려고 했으나.. 그럼 3개의 벽을 먼저 만들고서 값을 계산해야 할까? n, m = map(int, input().split()) center = list([map(int, input.split())] for _ in range(n)) dx = [-1,..
NxN크기의 땅. r행 c열에 있는 나라는 A[r][c]명 거주 중. 하루 동안 더 이상 인구 이동이 없을 때까지 인구이동 지속됨. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은 연합이라고 한다. 연합을 이루고 있는 각 칸의 인구수는 (연합의 인구수) / (연합을 이루고 있는 칸의 개수)가 된다. 편의상 소수점은 버린다. 연합을 해체하고, 모든 국경선을 닫는다. - 입력 1줄 : N, L, R (1 ≤ N ≤ 50, 1 ≤ L ≤ R ≤ 100) 2~N줄 : 각 나라의..
NxN 크기의 도시(빈 칸, 치킨집, 집 중 하나) (r, c) : r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸 치킨 거리 == 집과 가장 가까운 치킨집 사이의 거리 도시의 치킨 거리 == 모든 집의 치킨 거리의 합 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 0 == 빈 칸, 1 == 집, 2 == 치킨집 도시에서 가장 수익을 많이 낼 수 있는 치킨집의 개수는 최대 M개 도시의 치킨 거리가 가장 작게 될 때를 고려. - 입력 1줄 : N(2
비바라기 마법 -> NxN 격자에서 연습 격자의 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지함. 바구니에 저장할 수 있는 물의 양에는 제한 없음. (r, c)는 격자의 r행 c열에 있는 바구니를 의미. A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미. 격자의 가장 왼쪽 윗 칸 (1, 1) 가장 오른쪽 아랫 칸 (N, N) 연습을 위해 1번 행과 N번 행을 연결. 1번 열과 N번열 연결. 즉, N번 행의 아래에는 1번 행이, 1번 행의 위에는 N번 행이 있고, 1번 열의 왼쪽에는 N번 열이, N번 열의 오른쪽에는 1번 열이 있음. 비바라기 시전 -> (N, 1), (N, 2), (N-1, 1), (N-1, 2)에 비구름 생성 구름 이동 M번 명령 -> i번째 이동 명령은..
길이가 N인 컨베이어 벨트 / 길이가 2N인 벨트가 해당 컨베이어 벨트를 위아래로 감싸며 도는 중. 길이 1 간격으로 2N개의 칸으로 나뉨. 각 칸은 1부터 2N까지의 번호가 매겨져 있음. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동. i번 칸의 내구도는 Ai / 1번 칸이 있는 위치를 "올리는 위치" / N번 칸이 있는 위치를 "내리는 위치" 로봇을 올리는 위치에 올리거나 로봇이 어떤 칸으로 이동하면 그 칸의 내구도는 즉시 1만큼 감소. 1. 벨트가 칸 위에 있는 로봇과 함께 한 칸 회전. 2. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전하는 방향으로 한 칸 이동할 수 있다면 이동. 만약 이동할 수 없다면 가만히 ..
톱니 4개 (1, 2, 3, 4번 일렬 배치 / 각 8개의 톱니 / N극 or S극) K번 회전(한 칸 기준 / 시계 or 반시계) 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전할 수도 있고 안 할 수도 있음. ex) 톱니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니의 극이 다르다면, B는 A가 회전한 방향과 반대방향으로 회전. - 입력 1~4줄 : 1, 2, 3, 4번 톱니바퀴의 상태 (8개의 정수 / 12시 방향부터 시계방향 순서 / N극 == 0 , S극 == 1) 5줄 : K (1
로봇 청소기 장소 : N x M 크기의 직사각형 (1x1 크기의 정사각형 칸으로 나누어짐) 지도 (r, c) (r : 북쪽으로부터 떨어진 칸의 개수, c : 서쪽으로부터 떨어진 칸의 개수) 1. 현재 위치 청소 2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례로 탐색 진행 (1) 왼쪽 방향에 아직 청소 안 한 공간이 있으면, 그 방향으로 회전 후 다음 한 칸 전진하고 1번부터 진행 (2) 왼쪽 방향에 청소 필요 없으면, 그 방향으로 회전하고 2번으로 돌아가기 (3) 네 방향 모두 청소가 이미 끝났거나 벽이면, 바라보는 방향을 유지한 채로 한 칸 후진하고 2번으로 돌아가기 (4) 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동 멈추기 14503..
입력 1. input() 활용 1) n과 m에 각각 숫자가 할당되고, m번 반복하여 숫자행이 입력 n, m = map(int, input().split()) numbers = [] for _ in range(m): numbers.append(list(map(int, input().split())) 활용 2) n개의 숫자만큼 숫자들 여러 줄(엔터) 입력 n = int(input()) numbers = [int(input()) for _ in range(n)] 활용 3) 값들이 한 줄로(스페이스바) 입력 numbers = input().split() 2. sys.stdin.realine() 사용할 때, import sys를 해야 함. 기본으로 \n가 포함된다는 것을 유념. -> sys.stdin.readli..
보호되어 있는 글입니다.