simulation (22) 썸네일형 리스트형 (C++) - 백준(BOJ) 16926번 : 배열 돌리기 1 https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 구현(simulation) 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, m, r입력 후 n행 m열에 대해 매번 수를 입력받고 이차원 배열 arr에 저장합니다. 📔 풀이과정 좌상의 점, 우하의 점 이 두개의 점을 특정짓는다면 사각형이 그려집니다. 이 사각형의 테두리를 min(m,n)/2번 특정지어 .. (C++) - 백준(BOJ) 17143번 : 낚시왕 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 구현 문제였습니다. 📕 풀이방법 구조화, 갱신 시점을 꼼꼼히 처리해줘야합니다. 📔 입력 및 초기화 1. 상어의 정보를 가지고 있는 구조체 Shark를 선언합니다. 2. 각 상어의 정보를 가지고 있을 vector 변수 shark를 선언합니다. m을 입력받은 후 resize해줍니다. 3. 낚시왕의 좌표를 저장할 구조체 King을 선언합니다. 이에 해당하는 변수는 fishKing입니.. (C++) - 백준(BOJ) 17142번 : 연구소 3 www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 여러가지 알고리즘을 사용하는 문제였습니다. 풀이방법 1. 입력을 받습니다. vector pair 형태로 2인 부분의 행,열 좌표를 virusPos 변수에 저장해줍니다. 그 외 필요한 변수들을 선언해줍니다. 2. 바이러스를 m개 놓아야합니다. backtracking을 이용해 조합으로 뽑아줍니다. 그 좌표들을 spreadPos변수에 저장합니다. 3. bfs를 수행합니다. 그 후 가장 큰 값이 마지막으로 퍼졌을 때의 시간입니.. (C++) - 백준(BOJ) 21609번 : 상어 중학교 www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net bfs와 정렬을 구현하는 문제였습닌다. 풀이방법 1. 블록 그룹 넓이, 무지개 블록 개수, 기준 블록의 행,열을 struct로 하는 자료구조인 groups vector변수를 선언해줍니다. 그 외 기본적인 입력을 받을 board 등을 선언해줍니다. 2. 조건에 만족하는 블록 그룹의 기준 블록을 찾아줍니다. 무지개 블록은 공유될 수 있기 때문에 check이후 check해제해야합니다. 기준 블록을 찾았으면 gro.. (C++) - 백준(BOJ) 17135번 : 캐슬 디펜스 www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 구현 문제였습니다. 풀이방법 1. 적이 상태를 board배열에 입력받습니다. 2. mC3으로 궁수의 배치를 구합니다. 3. 게임을 진행합니다. 3-1. 매 궁수마다 각 적이 얼마나 떨어졌는지 거리를 구해줍니다. 그 후 가장 가깝고 왼쪽에 있는 적을 죽일 것임을 check해줍니다. *가장 왼쪽에 있는 궁수가 가까운 적을 먼저 죽이고 0으로 만들어 버린다면 틀립니다. 이유는 두 궁수로부터 가장 왼쪽에 있는 적의 거리가 같은 .. (C++) - 백준(BOJ) 8972 번 : 미친 아두이노 www.acmicpc.net/problem/8972 8972번: 미친 아두이노 요즘 종수는 아두이노를 이용해 "Robots"이라는 게임을 만들었다. 종수는 아두이노 한대를 조정하며, 미친 아두이노를 피해다녀야 한다. 미친 아두이노는 종수의 아두이노를 향해 점점 다가온다. www.acmicpc.net 구현 문제였습니다. 풀이방법 1. 매 이동마다 문제에 나와있는 1 ~ 5를 수행합니다. 2. 종수를 이동시킵니다. 이 때 이동하려는 곳에 미친 아두이노가 있다면 X 번째 움직임을 반환합니다. 잘 이동한다면 이동시킨 후 0을 반환합니다. 3. 미친 아두이노들을 이동시킵니다. 최소 거리로 이동시킵니다. map으로 미친 아두이노들의 r,c좌표를 pair로 하여 key를 설정하고 그곳의 아두이노 개수를 저장해줍니다... (C++) - 백준(BOJ) 11559번 : Puyo Puyo www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 구현문제였습니다. 풀이방법 1. 모든좌표를 돌면서 터뜨려봅니다. bfs를 통해 같은 영역이 있으면 없애줄 좌표들의 후보 queue인 popQ에 저장합니다. 같은 영역이 4이상이라면 popQ를 하나씩 빼주면서 해당 좌표의 값을 '.'로 바꿔줍니다. 2. 터진 후에는 내립니다. 세로로 한 열씩 떼서 확인합니다. 필드의 행,열의 값이 '.'이 아니라면 queue에 넣어줍니다. 최하단부터 qu.. (C++) - 백준(BOJ) 2174번 : 로봇 시뮬레이션 www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순 www.acmicpc.net 구현 문제였습니다. 기존 열,행 형식이 아닌 진짜 x,y좌표평면으로 생각해야 하므로 인덱스 처리가 약간 까다로웠습니다. 풀이방법 1. 입력받고 기존에 많이 했던 행,열의 방식으로 바꾸어 정보를 저장합니다. 2. 그 후 명령마다 반복횟수만큼 방향을 고려해 안전한지 확인하고 로봇을 이동합니다. 벽에 충돌 또는 로봇과 충돌할 경우에는 정답을 갱신해줍니다. 정답(ans 변수)값이 이미 있으면 굳.. 이전 1 2 3 다음