본문 바로가기

시뮬레이션4

[랜덤] BOJ 1091 - 카드 섞기 https://www.acmicpc.net/problem/1091 아이디어: 10분코딩: 15분 접근법카드를 석는 방법대로 카드의 위치를 옮기는 것이 핵심인 문제이다.이는 직접 과정을 하나하나 하다보면 점화식을 구할 수 있다. 먼저 현재 카드를 before={0, 1, 2, 0, 1, 2}이고, 섞는 순서를 S={1 4 0 3 2 5}라고 가정해보자. 그리고 섞은 후의 배열을 after[]라고 하자. S를 0번부터 ~5번까지 돌면서 각 상황을 보자.  before의 S[0]번째 카드는 after의 0번으로 이동해야한다.이를 식으로 표현하면 after[0] = before[S[0]] before의 S[1]번째 카드는 after의 1번으로 이동해야한다.이를 식으로 표현하면 after[1] = before[S.. 2024. 10. 25.
BOJ 144999 - 주사위 굴리기 14499번: 주사위 굴리기 (acmicpc.net) 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 접근 방법 정육면체인 주사위를 굴리는 과정을 어떻게 구현할지가 관건인 문제. 주사위를 X,Y로 굴리면서 밑 면의 숫자가 바뀌도록 하여야 한다. 문제에 나온 주사위 면의 인덱스가 햇갈려서 멋대로 정하여 해결했다. 2 4 1 3 5 6 0 1 2 3 4 5 처음에는 각 면에서 4방향으로 움직일 경우 어떻게 되는지 생각해보았다. 예를 들어, 0인 면이.. 2024. 4. 1.
BOJ 14891 - 톱니바퀴 14891번: 톱니바퀴 (acmicpc.net) 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 접근 방법 처음 문제를 잘못 해석했다. 톱니바퀴를 돌리고 나서, 맞닿는 부분끼리 비교하는 것으로 했지만 문제에선 먼저 비교를 다 한 후에, 돌리는 것으로 문제가 작성이 되어 있었다. 문제는 쉽게 해결할 수 있다. 톱니바퀴가 4개, 각 톱니바퀴의 바퀴상태가 8개 이므로 브루트포스를 이용하여 모두 확인하는 방향으로 구현했다. DFS처럼 재귀를 이용하여, 옆 톱니바퀴와 비교하는 식으로 진행하였다. 이 과정에서 비교 .. 2024. 3. 31.
[시뮬레이션] BOJ 15686 - 치킨 배달 with c++ 15686번: 치킨 배달 (acmicpc.net) 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 접근 방법 1. 폐업하지 않을 치킨집 M개를 선택한다. 2. 해당 폐업하지 않은 치킨집들과 집 사이의 거리들의 합 중 최소값을 구한다. 위 두 가지가 이번 문제의 핵심이다. 폐업하지 않을 치킨집을 고르는 방법 브루트포스밖에 없는 거 같다. 시간을 줄이기위해 백트래킹을 이용하기로 했다. 선택된 M개의 치킨집들과 집과의 거리의 최솟값을 구하기 위해 각 집마다 치킨집들과의 거리를 재어보고 이 중 가.. 2024. 3. 24.