본문 바로가기

시뮬레이션

백준 알고리즘 14890 입력 : 지도 정보, 경사로 설치에 필요한 길의 길이 출력 : 지나갈 수 있는 길의 개수 풀이 1. 행과 열을 각각 처리하도록 구현. 지도의 길을 각각 조사해 지나갈 수 있는 길은 1을 리턴, 지나갈 수 없는 길은 0을 리턴했다. 2. 평지에서는 반복문을 continue, 높이가 2칸 이상이면 길을 만들 수 없기 때문에 0을 리턴했다. 3. check변수를 만들어 계단을 설치한 부분은 true로 하고 나머진 false로 만들었다. 길을 올라가야할 때는 지나온 길에 계단을 설치해야 하는데 이미 계단이 있다면 계단을 설치할 수 없기 때문이다. #include using namespace std; int board[101][101]; bool checkForRow[101][101]; bool checkForC..
백준 알고리즘 15685 입력 : 드래곤 커브 갯수, 각 드래곤 커브의 시작점과 시작 방향 및 세대 출력 : 네 꼭지점이 모두 드래곤커브인 정사각형의 갯수 풀이 1. 한 드래곤 커브에 대한 정보를 입력받으면 바로 드래곤커브를 그린다. 2. 최소 1세대 이상이기 때문에 0세대 드래곤커브를 우선 그린다. 3. 세대만큼 반복문을 사용해 드래곤 커브를 그린다 - 각 점을 드래곤커브의 마지막 점을 기준으로 시계방향 90도 회전한 지점에 복사한다. 이를 위한 식은 다음과 같다. x = p.x - stdp.x; y = p.y - stdp.y; return getPoint(stdp.x - y, stdp.y + x); - 드래곤 커브는 bool 2차원 배열에 표현한다. 4. 모든 드래곤 커브를 그린 다음 전체 판에서 꼭지점이 모두 드래곤커브인 ..
백준 알고리즘 14891 입력 : 톱니바퀴 모양, 회전 횟수와 회전할 바퀴, 방향 출력 : 회전 후 톱니의 모양 풀이 1. 톱니모양을 나타내는 값 사이에 공백이 없어 int로 받을 시 0과 1을 8개받는게 아닌 8자리 수로 입력됨 -> 문자열로 입력받아 문자열로 모두 처리 -> 8자리 수로 받은 뒤 각 자리 수를 저장(채택) 2. 톱니바퀴를 돌리기 전, 좌우 톱니바퀴를 돌려야 하는지 확인한 후 돌려야하면 재귀실행 -> 무한반복할 수 있으니 한번 돌린 바퀴는 전역변수로 표시해주기 -> 맨 왼쪽이나 맨 오른쪽 범위 계산 3. 좌우 톱니바퀴는 돌리기 전 상태에서 확인해야 하기 때문에 재귀실행 후에 바퀴를 돌려야 한다. 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ..
백준 알고리즘 14499 머리에서 주사위 빙글빙글 하다 머리 터질뻔... 입력 : 지도의 가로세로 크기(N, M), 주사위를 놓은 좌표(X, Y), 명령어 갯수(K), 지도 및 명령어 출력 : 한 명령어를 수행할 때마다 주사위 윗면의 숫자를 출력 풀이 1. 주사위를 코드로 표현. 전역변수로 저장 0 North 0 0 West Top East Bottom 0 South 0 0 0 Bottom 0 0 * Bottom이 두 개인 이유는 동.서로 굴릴 경우와 남.북으로 굴릴 경우 모두를 쉽게 표현하기 위함 2. 주사위를 동서남북으로 굴리는 함수를 정의 -> 방향을 파라미터로 입력받는다. -> 동.서 방향은 2번 row을 좌우로 Shift, 남.북 방향은 2번 column을 위아래로 Shift -> Shift한 뒤에 두 Bottom값을 ..