본문 바로가기

알고리즘5

[BOJ]10026 - 적록색약(dfs) https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net - 쉬운 문제라 정리 안하려다가 타 블로그 해설을 보면 너무 어렵게 푸는 거 같아서 올려둠 - 모든 칸에서 dfs를 하면서 구간을 카운트하면 되고 적록색약인 케이스는 입력받은 맵을 수정해서(R -> G) 다시 dfs를 돌면 너무나도 쉽게 풀린다 #include #include #include #include using namespace std; const int dx[4] = {1, 0, .. 2021. 7. 3.
[BOJ] 6087 - 레이저 통신(BFS) https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net - 빛이 이동하면서 꺾이는 횟수를 저장하면서 BFS 탐색을 해도 될 것이고, 아래 코드처럼 선분 갯수를 카운트해서 1을 빼주면 거울 갯수가 된다. - 상하좌우로 빛이 이동하는 구간을 while문으로 표현할 수 있다는 점이 일반적인 bfs문제들과는 달라서 기록해둔다. bfs 탐색시 예외케이스를 continue문으로 빼버리는 템플릿에 익숙해지다보니 좀 햇깔렸다. - 지도의 크기를 W*H로 표.. 2021. 7. 2.
[boj]16236 - 아기상어(BFS, 우선순위 큐) https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net - 조건에 먹이를 먹는 조건의 우선순위가 정해져있다. (1. 아기상어 위치에서 가까운 순 2. 가장 위 3. 가장 왼쪽). 이를 other.x; } return d > other.d; } }; int n, size = 2, exp = 0, ans = 0; int a[20][20]; int check[20][20]; priority_queue pq; void bfs() { while (!pq.. 2021. 7. 2.
[BOJ] 7562번 나이트의 이동 java 풀이 https://www.acmicpc.net/problem/7562 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; class Pos{ int x, y; Pos(int x, int y) { this.x = x; this.y = y; } } public class BJ_7562 { static int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2}; static int[] dy = {1, 2, 2, 1, -1, -2, -2, -1}; pu.. 2020. 11. 16.