[백준 23289번] 온풍기 안녕!
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/23289 23289번: 온풍기 안녕! 유난히 추운 날씨가 예상되는 이번 겨울을 대비하기 위해 구사과는 온풍기를 설치하려고 한다. 온풍기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기 www.acmicpc.net BFS, 시뮬레이션 0. 입력 온도, 온풍기, 조사하는 칸을 각각 2차원 배열로 표현했습니다. int temperature[21][21]; int heater[21][21]; int inspection[21][21]; (a, b)와 (c, d) 사이에 벽이 있다는 것을 표현하기 위해서 다음과 같이 4차원 배열을 만들었습니다. bool wall[21][21][21][21]; //wall..
[백준 23290번] 마법사 상어와 복제
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/23290 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 시뮬레이션, 중복 순열, DFS 이 문제는 실수할 여지가 많았습니다. 저는 1번에서 5번을 순서대로 함수로 구현했습니다. 다음 함수 구현으로 넘어가기 전에 함수를 먼저 테스트하고 넘어갔습니다. 함수를 만들 때마다 테스트를 했던 방식이 실수를 줄이는 데 도움이 많이 되었던 것 같습니다. 0. 물고기, 상어, 냄새 표현하기 물고기는 격자에 여러 마리가 존..
[백준 16235번] 나무 재테크
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 구현, 시뮬레이션, 자료구조, deque(덱) 문제에서 요구하는 것을 그대로 구현하면 되는데 몇 가지 주의할 점이 있습니다. 1. 가장 처음에 양분은 모든 칸에 5만큼 들어있다. 처음에 양분을 초기화할 때 5로 초기화해야 합니다. A[r][c]로 초기화하면 안 됩니다. 2. 죽은 나무마다 나이를 2로 나눈 값이 나무가 있던 칸에 양분으로 추가된다. 이 요구사항을 구현할..
[백준 19238번] 스타트 택시
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 시뮬레이션, 우선순위 큐, BFS, 최단거리 먼저 택시를 기준으로 BFS를 사용해서 최단거리를 갱신합니다. 이때 다음 좌표로 이동할 때 택시의 연료가 부족하면 이동하면 안 됩니다. 현재 연료로 다음 좌표로 이동할 수 있으면 해당 손님의 좌표를 다음과 같은 기준으로 우선순위 큐에 기록합니다. 1. 현재 위치에서 최단거리가 가장 짧은 승객을 고른다...
[백준 17144번] 미세먼지 안녕!
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 시뮬레이션, BFS 미세먼지 확산은 BFS를 사용하면 됩니다. 그런데 확산할 때 주의할 점은 모든 미세먼지는 동시에 확산이 되기 때문에 BFS로 미세먼지를 하나하나 가져올 때마다 확산될 미세먼지의 양을 원본 배열에서 계산하면 안 되고 확산되기 전에 상태를 임시로 저장한 temp 배열에서 계산해야 합니다. (BFS는 하나씩 순서대로 처리하므로 하나 처리할 때마다 배열의 값이 바뀌기 때..
[백준 20055번] 컨베이어 벨트 위의 로봇
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 시뮬레이션, deque 컨베이어의 회전은 deque를 이용하면 쉽고, 효율적으로 회전하는 걸 구현할 수 있습니다. -> deque에 각 칸을 순서대로 넣고 회전시킬 때 맨 뒤에 있는 원소를 맨 앞으로 보내면 됩니다. 이제 문제에서 나온 조건을 그대로 구현하면 되는데 1. 로봇은 1 ~ N번 칸에만 있을 수 있고, N번 칸에 도착한 로봇은 없애버리면 됩니다. 2. ..
[백준 3190번] 뱀
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net deque(덱), 시뮬레이션 1. deque를 이용해서 뱀을 나타낸다 -> 뱀을 한 덩어리로 생각하지 말고 길이가 n이면 크기가 1인 뱀이 n개가 이어져있다고 생각하면 -> 각각의 뱀은 현재 자신의 위치와 방향을 가지고 있습니다. 2. deque로 뱀을 표현하면 이제 문제 그대로 구현하면 됩니다. ● 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. -> 현재 deque의 맨 마지막 뱀과..
[백준 16985번] Maaaaaaaaaze
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/16985 16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 www.acmicpc.net 시뮬레이션, BFS, 조합, next_permutation 1. 각 판 회전시키기 구현 2. next_permutation을 이용해서 각 판 쌓기 구현 3. BFS로 시작점부터 도착점까지 최단거리 구하기 -> 이때 큐브의 입구는 정육면체에서 참가자가 임의로 선택한 꼭짓점에 위치한 칸이고 출구는 입구와 면을 공유하지 않는 꼭짓점에 위치한 칸이다. -> 시작점을 0,..