본문 바로가기

Algorithm

[백준] 21610 마법사 상어와 비바라기 문제 설명 https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제에서 주어진 조건사항들을 그대로 구현하는 문제이다. 큰 제약사항이나 알고리즘이 따로 사용되지는 않으므로 순서에 맞게 그대로 구현만 잘 해주면 된다. 풀이 과정 문제에서 특별히 신경써주어야 하는 부분은, 조건5 부분이다. 먼저, 구름이 di 방향으로 si칸 이동한 후에 비를 뿌리고 구름은 사라진다. 이 때, 구름이 사라진 칸은 물복사 버그 후에 구름이 생길 수 없기 때문에 1로.. 더보기
[백준] 14891 톱니바퀴 (Python 파이썬) https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제 설명 문제에서 주어진 4개의 톱니바퀴를 규칙에 맞게 회전시키는 문제이다. 별다른 알고리즘 없이 문제에서 주어진 사항을 순서대로 구현만 하면 되는 문제이다. 풀이 과정 이 문제는 별다른 알고리즘 없이 문제에서 주어진 사항을 그대로 구현만 하면 되는 문제이다. 12시 방향을 0인덱스로 시작하여 11시 방향을 7 인덱스로 번호를 붙이기 때문에 현재 톱니바퀴의 왼쪽을 검사할 때는 [i][6] =.. 더보기
[백준] 14503 로봇 청소기 (Python 파이썬) https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 설명 문제에서 주어진 것 처럼, 로봇 청소기가 빈공간을 돌아다니며 청소를 한다. 현재 방향을 기준으로 왼쪽 방향부터 탐색을 시작하며, 방향은 0 = 북 / 1 = 동 / 2 = 남 / 3 = 서쪽을 의미한다. 문제에서 주어진 조건과 상황들을 잘 고려하여 코드를 작성해보자. 풀이 과정 먼저 로봇 청소기의 초기 위치는 무조건 0이며 해당 칸을 청소하게 된다. 청소를 한 칸은 2로 변경하여 청소.. 더보기
[백준] 14502 연구소 (Python 파이썬) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 설명 N x M 크기로 구성된 연구소에 바이러스가 퍼졌다. 연구소의 각 칸은 0, 1, 2로 구성되어 있으며 0은 빈 칸, 1은 벽, 2은 바이러스 이다. 바이러스는 벽을 뚫고 확장할 수 없으며 상하좌우에 인접한 빈 칸으로만 확장이 가능하다. 위 그림과 같이 N x M 모양의 연구소(행렬)가 주어지며, 3개의 벽(1)을 세워야 한다. 3개의 벽을 세웠을 때, 안전영역의 크기(0의 개수)의 최댓값을 구하면.. 더보기
[백준] 14500 테트로미노 (Python 파이썬) https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제 설명 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위.. 더보기
[백준] 14499 주사위 굴리기 (Python 파이썬) 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 문제 설명 문제에서 맵이 주어지고 맵의 첫 칸(0, 0)에 주사위를 놓는다. 그리고 주사위를 상, 하, 좌, 우 로 굴리게 되는데 주사위와 바닥에 닿는 면은 맵의 숫자로 복사가 된다. 그리고 주사위를 굴렸을 때 주사위 위쪽면의 숫자를 출력해야 한다. 따라서, 주사위 전개도를 생각하며 풀어야 하는 문제이다. 풀이 과정 이 문제를 풀기.. 더보기
[백준] 3190 뱀 (Python 파이썬) https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 설명 뱀 꼬리물기 문제이다. 뱀이 사과를 먹으면 점점 꼬리를 늘려가게 되며 뱀의 머리가 꼬리에 닿거나 벽에 닿으면 끝나는 게임이다. 뱀의 꼬리를 이동시키는 부분을 큐로 구현하는 부분이 핵심이다. 풀이 과정 이 문제는 큐를 이용한 구현 문제로 다음과 같이 접근하였다. ① 먼저 그래프(맵)을 모두 0으로 채워준다. ② 사과 위치는 모두 2로 채워준다. ③ 앞으로 뱀이 차지하고 있는 부분은 1로 채워줄 .. 더보기
[백준] 12100 2048 (Easy) (Python 파이썬) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 문제 설명 문제에서 주어진 2048 게임을 구현하는 문제이다. 평소의 2048 게임과는 다르게 이동시 새 블록이 추가되지는 않으며 5번 움직였을 때 맵 내의 최대값을 출력하면 된다. 풀이 과정 백트래킹을 이용해 모든 경우의 수에 대해 확인을 해야 하는 브루트포스 문제이다. 움직일 수 있는 방향은 동, 서, 남, 북 4가지 이다. 만약, 동쪽으로 움직인다면 모든 행에 대.. 더보기