구현 373

백준 14503번 로봇 청소기

문제 링크입니다: https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 흥미로운 문제였습니다. 핵심은 네 방향 다 청소할 곳이 없을 때 이미 청소한 곳이여도 돌아올 수 있다는 것이였습..

알고리즘/BOJ 2019.04.28

백준 15662번 톱니바퀴(2)

문제 링크입니다: https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, ..., 가장 오른쪽 톱니바퀴는 T번이다. 아래 그림은 T가 4인 경우이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다 www.acmicpc.net 최근에 비슷한 문제를 푼 적이 있어서 쉽게 풀 수 있었던 문제였습니다. 회전시킬 톱니바퀴를 회전시키지 않은 ..

알고리즘/BOJ 2019.04.27

백준 14914번 사과와 바나나 나누기

문제 링크입니다: https://www.acmicpc.net/problem/14914 14914번: 사과와 바나나 나눠주기 아름이가 나누어 줄 수 있는 경우를 모두 출력해야 하며, 각 경우마다 친구의 수, 사과 개수, 바나나 개수 차례로 한 줄에 각각 빈칸으로 구분하여 출력한다. 각 경우마다 중복없이 한 번만 출력되어야 하며, 경우의 순서는 친구의 수가 증가하는 순으로 한다. www.acmicpc.net a와 b의 공통 약수를 찾는 것이 핵심인 문제였습니다. 정답률이 말해주듯이 매우 쉬운 문제였습니다.

알고리즘/BOJ 2019.04.09

백준 1011번 Fly me to the Alpha Centauri

문제 링크입니다: https://www.acmicpc.net/problem/1011 별다른 알고리즘을 요구하지 않지만 규칙을 찾아야했던 문제였습니다. 최대 거리 워프 횟수 최고 속도 구현 1 1 1 1 4 3 2 121 9 5 3 12321 16 7 4 1234321 25 9 5 123454321 N^2 2*N-1 square(N) 12345...N....54321 결국, N을 구하고 최대 거리 N^2을 빼줬을 때 남은 거리에 대한 워프 횟수를 구해주면 되는 문제였습니다.워프 횟수는 N(한 번 워프에 최대로 갈 수 있는 거리)으로 나눈 뒤 일의 자리에 대해 올림해주는 방식으로 처리해주면 됩니다. #include #include using namespace std; int main(void) { ios_b..

알고리즘/BOJ 2019.03.07

백준 16720번 BAZE RUNNER

문제 링크입니다: https://www.acmicpc.net/problem/16720 간단한 브루트 포스(Brute Force) 문제였습니다. 알고리즘은 아래와 같습니다.1. 벽을 움직이는 횟수와 상관 없이 오른쪽으로 3칸, 아래로 (N - 1)칸 가는 것은 고정이기 때문에 결과는 (N + 2)로 시작합니다.2. 벽을 얼만큼 밀지를 결정하는데 각 높이마다 최대 2번 움직입니다.-> 이유는 3번 움직일 경우 반대 방향으로 1번만 움직이면 되기 때문입니다.3. 벽을 민 횟수 + (N + 2)를 출력해줍니다. #include #include using namespace std; const int MAX = 1000; const int INF = 987654321; int col[MAX]; int main(vo..

알고리즘/BOJ 2019.01.20

백준 16396번 선 그리기

문제 링크입니다: https://www.acmicpc.net/problem/16396 주어진 선분들을 visited 배열에 표시해주고 표시된 길이의 합을 출력하면 되는 문제였습니다. #include using namespace std; const int MAX = 10000; bool visited[MAX][MAX]; int main(void) { ios_base::sync_with_stdio(0); cin.tie(0); int N; cin >> N; for (int i = 0; i > x >> y; //선분들을 표시 for (int j = x; j < y; j++) visited[j][j + 1] = true; } int result = 0; for (i..

알고리즘/BOJ 2018.11.10

백준 9324번 진짜 메시지

문제 링크입니다: https://www.acmicpc.net/problem/9324 동일한 문자가 3번 나올 때마다 해당 문자가 다음 인덱스에도 등장해야지 진짜 메시지입니다.따라서, 동일한 문자가 3번 나왔을 때 해당 문자열이 끝난다거나, 다음 인덱스에 다른 문자가 있다면 가짜 메시지입니다! #include #include using namespace std; int main(void) { ios_base::sync_with_stdio(0); cin.tie(0); int test_case; cin >> test_case; for (int t = 0; t > s; int alphabet[26] = { 0 }; f..

알고리즘/BOJ 2018.11.07