danbibibi
article thumbnail
BOJ 15683번: 감시

문제 문제 바로가기> BOJ 15683번: 감시 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 cctv의 개수가 최대 8개로 적은 편이다. 따라서 가능한 cctv 방향을 모두 시뮬레이션 해보면서, 브루트포스 방식으로 문제를 풀었다. 탐색 방향을 미리 `dir` 배열에 정해두고, 모든 cctv의 방향을 정했을 때, 시뮬레이션 해주면 된다. C++ #include #include #define EMPTY 0 #define WALL 6 #define MAX 10 using namespace std;..

article thumbnail
BOJ 14891번: 톱니바퀴

문제 문제 바로가기> BOJ 14891번: 톱니바퀴 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 문제에서 요구하는 대로 구현해주면 되는 간단한 문제였다! 1. 톱니바퀴가 맞닿은 극이 같은지, 다른지 판단하여 방향을 저장한다. 2. 저장해둔 방향대로 회전을 진행한다. 3. 점수를 계산한다. 다만,, 톱니바퀴 회전 전 방향을 저장하지 않고, 회전 후 바뀐 방향으로 비교하는 바람에 조금 헤맸다 ^^,, C++ #include #include #define MAX 4 #define SIZE 8 using ..

article thumbnail
BOJ 23290번: 마법사 상어와 복제

문제 문제 바로가기> BOJ 23290번: 마법사 상어와 복제 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 풀이 문제를 풀 때 중요하다고 느낀 점을 몇가지 적어보겠다. 1. 배열 index 0 부터 시작할거면, 입력 시 위치, 방향 -1 해주기!! 2. 이동 못한 물고기는 제자리에 넣어주기 !! (`ismove` 변수를 이용해 찾지 못한 경우 제자리에 기존 방향으로 넣어주었다.) 안 그러면 물고기가 중간에 사라져 버리는 현상 발생 ^^ 3. 상어의 움직임 시뮬레이션할 때, ..

article thumbnail
BOJ 17143번: 낚시왕

문제 문제 바로가기 > BOJ 17143번: 낚시왕 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 풀이 문제를 풀 때 중요하다고 느낀 점을 몇가지 적어보겠다. 1. 상어 이동 시 편의를 위해, num 배열을 만들고, 해당 상어의 정보(순서)를 저장해 둔다. num[r][c] = i : (r, c) 위치의 상어는 i번째 상어 ( = shark[i]의 위치는 (r, c)) 2. 시간 초과 방지를 위해 상하 이동인 경우에는, s%=(2*R-2) 좌우 이동인 경우에는, s%=(2*C-2) 을 적용..

article thumbnail
BOJ 17144번: 미세먼지 안녕!

문제 문제 바로가기> BOJ 17144번: 미세먼지 안녕! 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 풀이 문제에서 요구하는 대로 구현만 해주면 된다! C++ #include #define MAX 51 using namespace std; int ar = 0; int R, C, T; int home[MAX][MAX]; int copy_home[MAX][MAX]; int dr[] = {-1, 1, 0, 0}; int dc[] = {0, 0, -1, 1}; void input(){ cin >> R >> C ..

article thumbnail
BOJ 14503번: 로봇 청소기

문제 문제 바로가기> BOJ 14503번: 로봇 청소기 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 풀이 문제에서 설명한 조건에 따라 구현해주면 된다! 문제의 2-1, 2-2 조건은 현재 위치에서 반 시계 방향으로 돌면서 청소 가능한 위치를 찾는 것을 의미한다! [북 동 남 서] 순서의 배열이기 때문에, 반시계 방향은 -1을 해주면 된다. 이때, "북(0)-1 = -1" 이므로, 이를 방지하기 위해 "(d-1+4)%4 = (d+3)%4" 를 해준 것이다. C++ #include #include #defin..

article thumbnail
BOJ 16236번: 아기상어

문제 문제 바로가기> BOJ 16236번: 아기상어 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 문제의 요구사항에 따라 구현해 주면 된다. 설명은 주석으로 자세히 적어 놓았다! 이런 문제는 물고기 먹은 처리, 상어 정보 update 등을 잊지 않고 해주는 게 중요한 것 같다. 문제를 풀 때, 알고 있으면 도움이 되는 개념은 다음과 같다! ✔️ operator 재정의 ✔️ 구조체 정의 ✔️ 그래프 탐색 C++ #include #include #include #define MAX 21 using n..