본문 바로가기

분류 전체보기

(89)
백준 2583번 영역 구하기 https://www.acmicpc.net/problem/2583 아이디어:1. 직사각형 k에 대해 board[i][j] = 1 로 하고 2중 for문으로 board[i][j] == 0 && vis[i][j] == 0 을 찾아 큐에 넣으면서 BFS2. 큐에 넣으면서 num++; 넓이로 저장할 area는 큐에서 빼면서 ++한 뒤, area가 0이 아닐 때 벡터 areas에 삽입3. 벡터 areas를 sort()로 정렬해서 num 뒤에 출력 n과 m이 각각 y축, x축을 가리 키는 것에 주의y축에서, 그림을 상하 반전 시켜도 넓이는 그대로이므로문제 그림에 충실해서 for문을 반대로 돌리는 등 별도 처리하지 않아도 된다. #include #include using namespace std;char board[..
백준 5427번 불 https://www.acmicpc.net/problem/5427 아이디어:1. 4179번 불! 을 여러번 수행하는 문제2. bool 형 isPossible을 두어 반복문의 끝에 "IMPOSSIBLE" 출력 여부 검사 #include #include using namespace std;char board[1001][1001];int vis[1001][1001];int fire[1001][1001];int dx[4] = { 1, 0, -1, 0 };int dy[4] = { 0, 1, 0, -1 };int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { int n, m; cin >> m >> ..
백준 7562번 나이트의 이동 https://www.acmicpc.net/problem/7562 아이디어:1. 방향 dx, dy를 나이트의 이동에 맞게 변경하고 거리를 기록하는 BFSint dx[8] = { 2, 1, -1, -2, -2, -1, 1, 2 }; int dy[8] = { 1, 2, 2, 1, -1, -2, -2, -1 }; #include #include using namespace std;int board[301][301];int vis[301][301];int dx[8] = { 2, 1, -1, -2, -2, -1, 1, 2 };int dy[8] = { 1, 2, 2, 1, -1, -2, -2, -1 };int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ..
백준 7569번 토마토 https://www.acmicpc.net/problem/7569 아이디어:1.3차원 BFS7576번 토마토의 3차원 문제2. tuple 사용삽입 Q.push({ nx, ny, nz});cur 선언 tuple cur = Q.front();확인 get(cur) = cur의 1번째 값, get(cur) = cur의 2번째 값, get(cur) = cur의 3번째 값대입 ans = vis[get(cur)][get(cur)][get(cur)]; 배열 인덱스와 N, M, H의 순서에 주의3. 방향 dx, dy에 이어 int dz[6] = { 0, 0, 0, 0, 1, -1}; 추가가운데 익은 토마토를 기준으로 x, y, z 방향 처리4. 배열 인덱스 board[][][], vis[][][]와 N, M, H의 순서..
백준 10026번 적록색약 https://www.acmicpc.net/problem/10026 아이디어:1. 비적녹색맹 BFS 수행 후 적녹색맹 BFS 수행비적녹색맹 먼저 BFS 수행하며 nonBlind++;vis[][]를 다시 0으로 초기화한 뒤에board[][]의 'G'를 모두 'R'로 변경한 뒤 적녹색맹 BFS 수행하며 blind++;2. 이중 for문으로 순회하며 vis[][]가 0인 곳을 새로운 시작점으로 큐에 push()한 뒤 BFS 수행 #include #include using namespace std;char board[101][101];int vis[101][101];int n;int dx[4] = { 1, 0, -1, 0 };int dy[4] = { 0, 1, 0, -1 };int main() { ios::sy..