전체 글 166

BOJ 백준 21611 마법사 상어와 블리자드

문제 : https://www.acmicpc.net/problem/21611 [ 문제 요약 ]맵은 N*N 크기가 주어지며 N은 항상 홀수입니다. 가장 왼쪽 위 칸은 1,1이고, 가장 오른쪽 아래 칸은 N, N입니다.상어는 맵의 정중앙에 있습니다. [ (N+1)/2 , (N+1)/2) ]구슬의 이동은 중앙에서 왼쪽 방향부터 달팽이 모양으로 이동합니다.상어가 있는 칸 외에 모든 칸에는 구슬이 들어갈 수 있습니다.구슬은 1,2,3번 구슬이 있습니다.같은 번호를 가진 구슬이 번호가 연속하는 칸에 있으면, 그 구슬을 연속하는 구슬이라 합니다.구슬 파괴 단계 마법을 사용해 구슬을 파괴합니다. 마법을 사용하려면 방향 di와 거리 si를 정해야 합니다. 총 4가지 방향 ↑, ↓, ←, →이 있고, 정수 1,2,3,4로..

BOJ 백준 20061 모노미노도미노 2 [JAVA]

문제 : https://www.acmicpc.net/problem/20061 [ 문제 요약 ]빨, 파, 초 보드가 그림과 같이 붙어 있습니다. x는 행, y는 열을 의미합니다.게임에 사용하는 블록은 타일 하나 또는 두 개가 가로, 세로로 붙어 있는 형태입니다.블록을 놓을 위치를 빨간색 보드에서 선택하면, 그 위치부터 초록색 보드와 파란색 보드로 블록이 이동합니다.블록의 이동은 다른 블록을 만나거나 보드의 경계를 만나기 전까지 계속해서 이동합니다.초록색 보드의 한 행이 모두 차있으면 그 행의 모든 블록이 사라지고, 사라진 행 위에 있는 블록은 사라진 행만큼 밑으로 이동합니다.파란색 보드의 한 열이 모두 차있으면 그 열의 모든 블록이 사라지고, 사리진 열 왼쪽에 있는 블록은 사라진 열만큼 오른쪽으로 이동합..

BOJ 백준 19237 어른 상어 [JAVA]

문제 : https://www.acmicpc.net/problem/19237[ 문제 요약 ]N*N 크기의 격자에 상어가 1~M까지 번호가 있고, 모든 번호는 서로 다르게 한 칸에 존재합니다.자기보다 번호가 큰 상어는 번호가 작은 상어가 모두 쫓아낼 수 있습니다.맨 처음에는 모든 상어가 자신의 위치에 자신의 냄새를 뿌립니다. 그 후 1초마다 모든 상어가 동시에 상하좌우 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌립니다.냄새는 K 초 후 사라집니다. 상어가 이동 방향을 경정할 때는 인접 칸 중 아무 냄새가 없는 칸의 방향으로 갑니다. 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡습니다.이때 가능한 칸이 여러 개일 수 있는데, 그 경우 특정한 우선순위를 따릅니다.우선순위는 상어마다 다를..

BOJ 백준 21918 전구 [JAVA] 느리게 갱신되는 세그먼트 트리

문제 : https://www.acmicpc.net/problem/21918 [ 문제 요약 ]전구의 개수와 전구의 초기 상태, 켜고 끌 명령어 개수가 주어질 때 해당 명령어대로 실행한 후 전구의 최종 결과를 출력하는 문제입니다. 1은 켜진 상태, 0은 꺼진 상태입니다. 명령어 종류는 아래와 같이 4개가 있습니다.1 i x = i 번째 전구를 x로 변경합니다.2 l r = l ~ r까지의 전구 상태를 반전 시킵니다(xor)3 l r = l ~ r까지의 전구를 모두 끕니다.4 l r = l ~ r까지의 전구를 모두 켭니다. [ 테스트 케이스 설명 ]8 3// 전구 숫자1 [ 알고리즘 분류 ]구현시뮬레이션 [ 문제 해설 ] 이 문제는 브론즈 2 레벨 문제로 일반적인 반복문으로 쉽게 해결 가능합니다. 느리게 ..

BOJ 백준 17837 새로운 게임 2 [JAVA]

문제 : https://www.acmicpc.net/problem/17837[ 문제 요약 ]N*N 체스 판에서 K 개의 말을 놓고 게임을 합니다.말은 1번부터 K 번까지 번호가 있고, 이동 방향은 상하좌우입니다. 하나의 말 위에 다른 말을 올릴 수 있습니다.체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 칠해져있습니다.턴 한번은 1번 말부터 K 번 말까지 순서대로 이동 시키는 것이고, 말 이동시 위에 올려져 있는 말도 함께 이동합니다.턴이 진행되던 중 말이 4개 이상 쌓이는 순간 게임이 종료됩니다.말의 이동 방향에 있는 칸에 따라서 말의 이동이 다르며 아래와 같습니다.[ 이동 칸이 흰 색인 경우 ] A 말을 이동시키는데 이동하는 칸이 흰 색인 경우 그 칸으로 이동합니다. 이동하려는 칸에 말이 이미 ..

BOJ 백준 19238 스타트 택시 [JAVA]

[ 문제 해설 ]N*N 격자 칸에서 M 명의 승객을 태워 목적지에 데려다줍니다. 각 칸은 비어 있거나 벽이 놓여있습니다.손님을 같이 태우는 일은 없습니다. 승객을 태워 목적지로 이동시키는 일을 M 번 반복합니다.손님은 출발지에서만 택시에 타고 도착지에서만 내립니다.승객을 태울 때는 현재 위치에서 최단거리가 가장 짧은 승객을 태웁니다. 그런 승객이 여러 명이면 그중 행번호가 가장 작은 승객을, 이것도 여러 명이면 열 번호가 가장 작은 승객을 태웁니다.택시와 승객이 같은 위치에 있다면 최단거리는 0입니다.연료는 한 칸 이동 시마다 1만큼 소모되며 한 승객을 목적지로 성공적으로 이동시키면, 그 승객을 태워 이동하면서 소모한 연료 양의 두 배가 충전됩니다.이동 중 연료가 바닥나면 이동에 실패하고 업무가 끝납니다..

BOJ 백준 17822 원판 돌리기 [JAVA]

문제 : https://www.acmicpc.net/problem/17822 [ 문제 요약 ]반지름이 1,2,3... N인 원판이 크기가 작아지는 순으로 바닥에 놓여있습니다. 원판의 중심은 모두 같고 1번 원판이 가장 작은 원판입니다.각 원판에는 m 개의 정수가 적혀있습니다.원판 회전은 독립적으로 이루어집니다. 2번 원판을 회전했을 때, 나머지 원판은 회전하지 않습니다.원판을 회전시킬 때는 수의 위치를 기준으로 하며, 회전시킨 후의 수의 위치는 회전시키기 전과 일치해야 합니다.원판을 아래와 같은 방법으로 총 T 번 회전시키려고 합니다. 원판의 회전 방법은 미리 정해져 있고, i 번째 회전할 때 사용하는 변수는 xi, di, ki입니다.번호가 xi의 배수인 원판을 di 방향으로 ki 칸 회전시킵니다. (..

BOJ 백준 15662 톱니바퀴(2) [JAVA]

문제 : https://www.acmicpc.net/problem/15662 [ 문제 요약 ]총 8개의 톱니를 가지고 있는 톱니바퀴 T 개가 일렬로 놓여있습니다.톱니바퀴의 톱니는 N, S 극 중 하나를 갖습니다. 톱니바퀴에는 가장 왼쪽부터 1번 .. N 번까지 번호가 매겨져 있습니다.톱니바퀴를 총 K 번 회전시키려 합니다. 회전은 시계, 반시계 방향이 있습니다.톱니바퀴를 회전 시킬 때, 회전시킬 톱니바퀴 번호와 회전 방향이 주어집니다.톱니바퀴가 회전할 때, 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전시킬 수도 있고, 회전시키지 않을 수도 있습니다.A 톱니가 회전할 때 그와 맞닿은 B 톱니의 극이 다르다면 B는 A가 회전한 방향과 반대 방향으로 회전합니다. 극이 같다면 회전하지 않습니다.톱니를 회..

BOJ 백준 6086 최대 유량 [JAVA]

문제 : https://www.acmicpc.net/problem/6086 [ 문제 요약 ]다양한 크기의 N 개의 파이프들이 랜덤으로 연결돼있습니다.파이프를 통과하는 유량을 계산해야 합니다. 두 개의 배수관이 한 줄로 연결돼 있을 때 두 관의 유량 중 최솟값으로 흐르게 됩니다.예를 들어 용량이 5인 파이프가 3인 파이프와 연결되면 3짜리 파이프가 되는 것입니다.게다가 병렬로 연결돼 있으면 각 용량의 합만큼 물을 보낼 수 있습니다. +---5---+ ---+ +--- -> +---8---+ +---3---+마지막으로 어떤 것에도 연결돼 있지 않으면 물이 못 흘러 제거됩니다. +---5---+ ---+ -> +---3---+ +---..

BOJ 백준 20056 마법사 상어와 파이어볼 [JAVA]

문제 : https://www.acmicpc.net/problem/20056 [ 문제 요약 ]크기가 N*N인 격자에 파이어볼 M 개를 발사했습니다. 가장 처음 파이어볼은 각자 위치에서 이동을 대기합니다.i 번 파이어볼의 위치는 (y, x) 질량은 mi, 속력은 si입니다. 좌표는 1부터 시작입니다.1번 행은 N 번 행과 연결되어 있고, 1번 열은 N 번 열과 연결되어 있습니다.파이어볼의 방향은 어떤 칸과 인접한 8개의 칸의 방향을 의미하며, 정수로는 아래와 같습니다.7 0 16 25 4 3 모든 파이어볼에게 이동을 명령하면 다음 일이 일어납니다. 모든 파이어볼이 자신의 방향 d로 s 칸만큼 이동합니다(동일 칸에 여러 파이어볼 가능)이동이 모두 끝난 후 2개 이상의 파이어볼이 있는 칸에 아래 일이 일어..