16235 - 나무 재테크
·
백준
문제 https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 풀이 요구사항 같은 경우에는, 크게 설명할 게 없다. 각 칸마다 1개 이상의 나무들을 저장할 수 있는 리스트와, 양분을 저장할 수 있는 저장 공간을 만들어둔다. 이후 봄, 여름, 가을, 겨울 로직을 순서대로 실행한다. 봄에서 특정칸의 나무들을 모두 체크할 때, 만약 현재 양분으로 나무들을 못주면 죽는 나무로 처리한다. 그리고 양분을 줄 수 있는 나무중 5의 배수인 나무의 위치..
15864 - 사다리 조작
·
백준
문제 https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 풀이 시간제한이 굉장히 빡센 문제로, 오랫동안 고민한 문제다. 내가 처음 풀이했던 방식은 다음과 같다. 우선 입력을 모두 받고 아래와 같은 형식으로 2차원 배열을 저장한다. '#' 은 내가 움직일 수 있는 가로선과 세로선을 의미한다. 이후에 사다리를 0개, 1개, 2개, 3개 놓는 모든 상황을 dfs로 만들어주고 탐색을 시작한다. 단 가로선이 연속되지 않도록 검사하면서 놓아주어야 한다. 탐..
15863 - 감시
·
백준
문제 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 완탐 + 구현문제이다. 첫번째로 cctv 종류와 cctv위치를 배열에 저장한다. 다음으로 cctv별로 회전할 수 있는 경우의 수를 모두 구한다. 나는 일관성을 가지기 위하여 모두 4방향으로 회전한다고 가정했으며 [ 0, 1, 2, 3 => 우, 하, 좌, 상 ] 순으로 정의했다. 이 때 itertools product를 통하여 모든 경우의 수를 만들었다. 마지막으로 3차원 배..
3190 - 뱀
·
백준
문제 https://www.acmicpc.net/status?user_id=whipbaek&problem_id=3190&from_mine=1 채점 현황 www.acmicpc.net 풀이 처음에 헷갈렸던거 1. 가장 좌측 상단은 [1, 1] 이다. [0, 0] 이 아니다. 2. 시간과 방향이 입력될 때 8 D, 10 D 이런식으로 들어오는데 시간초는 절대적인 시간을 의미한다. 8초가 끝난 후에 이후 추가적인 10초가 아니라 '시작 시간' 이후의 시간을 받는것이니 헷갈리지 말자. 풀이 처음에는 방향을 설정해줬다. L을 받으면 왼쪽으로 틀고, D를 받으면 오른쪽을 틀도록 dx, dy를 설정했다. 이후에는 사과의 위치와 뱀의 위치를 저장하는 2차원 배열을 각각 만들었다. * 생각해보니 이 두개의 정보는 한 배열..
12100 - 2048 (Easy)
·
백준
문제 https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 풀이 완전탐색이 조금 곁들여진 구현문제이다. 우선 최대 5번을 움직여야하니 경우의 수를 모두 만들어주면 된다. 난 itertools 의 product를 사용해서 경우의 수를 만들었고, 각자 숫자와 방향을 매칭해서 생각했다. ( 0, ← ) , ( 1, ↑ ) , ( 2, → ) , ( 3, ↓ ) 이후에 숫자를 어떻게 합칠지 말지를 생각했는데, 행 단위로 생각했고..
15685 - 드래곤 커브
·
백준
문제 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 풀이 문제를 풀기전, 해당 문제의 x와 y값을 잘 참조하자. 해당 문제 풀이의 핵심은 시계방향으로 회전하고, 그 방향을 계속 저장해주는것이다. 우선 격자를 이동할 배열 순서를 → ↑ ← ↓ 순으로 저장한다. 0방향으로 시작하는 드래곤 세대들을 살펴보면 ※ 0세대 : → ※ 1세대 : → ↑ ※ 2세대 : → ↑ ← ↑ ※ 3세대 : → ↑ ← ↑ ← ↓ ← ↑ 순으..
17141 - 연구소 2
·
백준
문제 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이러 www.acmicpc.net 풀이 완전탐색 + Multisource BFS 문제이다. 여러개의 시작점을 모두 구한 후에, BFS를 모두 실행해본다음, 빈칸에 바이러스를 다 퍼트리는 경우, 최솟값을 구하면 된다. 빈칸에 모두 퍼졌는지는 초기에 빈칸의 개수를 구하고, BFS 실행 로직에 빈칸만큼 바이러스가 퍼진지 확인했다. 문제를 풀면서 이슈가 좀 있었는데 1. 시간초과 처음 완전탐색을 위해서 itertools.permutatio..
14890 - 경사로
·
백준
문제 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 나는 현재 위치 기준으로, 다음 변하는 값이 큰 값인지, 작은 값인지에 따라 분기를 나누었다. (만약 한 칸 차이가 아니라면 무조건 안되므로 바로 False!) 큰 경우를 살펴보면 예로, 배열은 [2,2,3,3] l은 2 라고 해보자. 2의 개수를 계속 카운트 하다가, 3이 나오면 경사로는 2에 설치해야한다. 따라서 2의 개수가 l개 이상인지 판단하면 된다. 만약 경사로를 설치할 수 있다면 현재값을 3으로 이..
14499 - 주사위 굴리기
·
백준
문제 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 풀이 삼성 기출답게 시뮬레이션, 빡구현 문제다. 주사위의 절대적인 위치를 배열로 정해둔다. (난 문제에서 나온 숫자와 위치를 매칭했다.) 이후 동, 서, 남, 북 이동시에 갱신되는 로직을 각각 작성하면 된다. (이건 실제로 주사위 한 번 굴려보거나 그림 그려보면 된다.) 그리고 이동한 칸의 값을 보고 복사여부를 따져주면 된다...
16236 - 아기 상어
·
백준
문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 bfs 기반 빡(?)구현 문제이다. bfs로 계속 탐색을 하면서 현재 물고기 크기에서 먹을 수 있는 물고기를 모두 찾아본다. 단 탐색시에 자신보다 큰 물고기를 지나갈 수 없고, 같은 크기의 물고기는 지나는 가되 먹을 물고기에 추가하지는 않는다. 그렇게 현 상황에서 먹을 수 있는 모든 물고기를 저장해둔 배열을 다중 조건으로 정렬해줘야한다. 1. 크기 2. 크기가 같다면 열 오름차순..