골드IV4 [17144]미세먼지 안녕! - c++ https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 아이디어 1. 미세먼지를 확산시킨다 2. 공기청정기가 돌아간다 3. T번만큼 반복한다 일단 공기청정기를 반시계, 시계 방향으로 돌리는 법을 생각해야 했다. 공기청정기 돌리기 공기청정기의 머리 쪽은 반시계 방향, 몸통 쪽은 시계방향이다. 이렇게 둘로 나눠서 구현했다. 벽을 만날 때까지 반복해야 하니 방향이 필요하다 어느 방향으로 벽을 만날 때까지 나아갈 것인지 int dx[4] = {-1,0,1,.. 2023. 6. 9. 14502 - c++ 요약 바이러스가 연구실에 퍼진다 무조건 벽을 3개 세워서 최대 안전영역을 확보하는 것 아이디어 벽을 세울 수 있는 모든 경우의 수를 계산한다. 최대한 적은 계산을 하기 위해 조합을 사용한다. 즉 입력받으며 바이러스를 저장, 빈칸도 따로따로 저장한다. 그리고 조합을 사용해야 하므로 do while에 next_permutation을 사용한다. 이제 각각 벽을 세울 수 있는 곳에 벽을 세우고 난 후 바이러스를 전파 시킨 다음 안전영역을 계산한다. CODE #include #define X first #define Y second using namespace std; void init(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } int n, .. 2023. 5. 31. 3190 - c++ 요약 우리가 아는 뱀 게임과 똑같다 사과를 먹으면 몸의 길이가 늘어나고 그게 아니라면 이동하는 방식 아이디어 방향을 저장할 변수가 필요하다 (dir) 동서남북을 숫자로 지정해 준다 (동 = 0, 남 = 1, 서 = 2, 북 = 3) 문제 몸이 꺾였을 때 뱀의 꼬리는 흔들림 없이 편안하게 꺾여야 함 즉 머리만 꺾여야 함 이 부분을 고민하면서 자료구조 큐를 써야 함을 알게 되었다. 굳이 복잡하게 머리를 꺾으면 꼬리를 가만히 있어야 되고... 이러쿵저러쿵하기보다 간단하게! 큐를 써서 추가될 때마다 큐에 집어넣어 준다면 꼬리는 당연하게도 큐의 가장 앞에 위치하게 될 것이다. 맞쥬? 1. 내가 가게 될 다음칸에 사과가 있으면 다음 위치를 큐에 추가해 주고 2. 만약 빈칸이라면 큐에서 꼬리를 pop() 해주고 다음.. 2023. 5. 30. 백준 18080 - c++ 요약 1. 노트북 뒷면에 스티커를 붙일 거다 2. 스티커를 붙일 때 왼쪽 가장 위에 붙일 수 있다면 바로 붙인다. 3. 안되면 스티커를 90도씩 돌려가면서 계속 붙여본다. 4. 그래도 안되면 그 스티커는 버린다. 5. 마지막에 스티커를 붙인 총넓이를 구한다. 아이디어 1. 스티커를 붙일 수 있는지 한 번씩 모든 좌표에서 확인해봐야 한다. 노트북 배열을 돌면서 로직을 구성한다. 2. 붙일 수 있다면 붙인다. 3. 안되면 스티커를 돌려야 한다. 구현 1. 스티커를 돌리는 함수 void rotate(){ int tmp[12][12]; for(int i =0; i < r; ++i) for(int j =0; j < c; ++j) tmp[i][j] = sticker[i][j]; for(int i =0; i < c;.. 2023. 5. 28. 이전 1 다음