목록Baekjoon(C++)/시뮬레이션 (8)
민준이 블로그에영

문제를 읽고 처음 생각했던 방법은dx[2] = {0, 0}; dy[2] = {-1, 1}, 을 놔두고 움직이면서 양 옆으로 감싸진 벽이 있다는 해당 칸은 물이 고이는 영역으로 구현하는게 좋지 않을까.위 방법으로 구현 방법을 고민하니 반복문을 통해 2차원 배열을 정의하면 간단하게 구현이 가능할 것 같다고 판단예시를 토대로 보자(4, 4)에 3, 0, 1, 4로 주어졌을 때 빈 공간은 0, 벽이 설치된 공간은 1이라고 정의하자.2차원 배열의 모든 경우를 순차적으로 탐색 물이 고이기 위해서는 양 옆으로 벽이 설치되어 있어야 한다boolean 변수를 하나 정의해 탐색을 하던 도중 벽이 있다면 boolean 변수의 값을 true로 변경하고 계속 작업을 한다빈 공간을 만난다면 count 변수를 1 증가만일 true..

아이디어두 가지 로직이 필요폭탄을 터트리는 것폭탄을 채우는 것폭탄을 채우는 경우에는 기존에 있던 폭탄과 새로 추가하는 폭탄은 로직적으로 분리시켜야 함기존에 있던 폭탄의 좌표는 queue에 담아서 저장하자! (이렇게 설정하면 터트릴 때 해당 위치에서 4방향으로 처리하면서, queue가 빌 때까지 진행할 수 있다고 생각했음)그렇다면 N을 어떻게 처리?for 반복문의 종료 조건을 N으로 설정해서 처리하자잠깐만 생각해도 아래와 같은 결론이 나옴1 -> 초기상황2 -> 폭탄 채우기3 -> 펑4 -> 폭탄 채우기5 -> 펑....for 반복문의 idx를 짝수, 홀수의 경우로 나눠서 위에서 설정한 두 가지 로직의 함수를 실행하면 문제가 없는거 아닌가?문제는 없습니당~ 제 코드를 보면 똑같이 수행했을 때 잘 동작하는걸..

섬의 개수가 오늘날보다 적어질 것이기 때문에 지도의 크기도 작아져야 함문제 조건에 따라서 지도가 작아지는 입력으로 반드시 주어질 것이라고 판단인접한 세 칸 또는 네 칸에 바다가 있는 땅은 모두 잠겨버린다dx, dy 배열 선언반복문을 돌면서 X 주변에 인접한 바다의 개수를 센다(cnt)nx, ny가 배열 바깥의 값인 경우 바다로 간주하기 때문에 이 부분도 처리가 필요하다!바로 'X'에서 '.'으로 바꿔주면, 인접한 다른 땅에서 cnt를 셀 때 영향을 받을 수 있음bool 타입 배열을 선언해 넘는 경우에는 true로 변경해주고 판단하도록 설정하자!지금 봐도 아이디어를 참 잘 생각한거 같음, 그런데 아쉬운건 코드가 별로 안이뻐요. 코드#include #include using namespace std;#def..

마이 아이디어상하좌우로 이동할 수 있음dx, dy 배열을 선언L, R -> 왼쪽으로 90도, 오른쪽으로 90도 회전 가능위에서 선언한 배열을 상 좌 하 우 순서대로 선언해서 배열의 idx로 판별하도록 로직을 설정하자!F, B -> 직진 또는 후진 가능마찬가지로 배열 상하, 좌우 -> 서로 2칸씩 떨어져 있음 -> idx로 판별하도록 로직을 설정하자!걍 이러니까 끝나던데요 코드#include #include using namespace std;// UP, LEFT, DOWN, RIGHTint dx[4] = {1, 0, -1, 0};int dy[4] = {0, -1, 0, 1};int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); co..

1, 2, 3, 4가 각각 동서남북을 의미하므로 dx, dy 배열의 인덱스를 사용해 해당 명령을 처리각 위치에 따라서 동서남북을 이동할 때 위치가 바뀌므로 고정된 좌표를 사용하기로 결정아래 사진의 1, 2, 3, 4, 5, 6을 배열의 인덱스로 설정해 0, 1, 2, 3, 4, 5로 변경0은 현재 주사위의 바닥, 5는 현재 주사위의 위로, 보이는 면으로 설정동, 서, 남, 북 각각의 경우를 함수로 구현해 dice의 위치를 변경해줌외에는 현재 grid 배열의 값이 0인 경우 dice에 있는 값을 복사0이 아닌 경우에는 dice에 해당 값을 복사하고 grid의 값을 0으로 초기화 문제상황테스트 케이스가 제대로 동작하지 않는 문제가 발생 -> 코드를 잘못 구현했다고 판단int nx = x + dx[comman..

인접한 나라의 인구차이가 L이상 R 이하라면 국경선을 열어라인접한 두 나라간의 차이를 계속해서 확인할 것이므로 BFS 개념을 활용visited 배열을 선언해서 한 번 방문한 나라는 true로 설정해서 재탐색을 못하도록 설정BFS의 반환으로 vector> new_country를 반환main 함수 안에서 현재 country의 인구와 new_country의 인구를 비교하면서 다르다면 날짜를 +1, 같다면 반복문을 멈추고 날짜를 출력자꾸 무한 반복문에 빠져서 코드가 제대로 동작을 안했음, 대체 왜 작동을 안하는거야 이놈아 했는데for (int k = 0; k = L && diff diff 변수를 선언 -> country[nx][ny]와 country[cur_x][cur_y]의 차이를 비교해서 L과 R 값과 비교..