시뮬레이션 8

알파윷 - E

문제 T개의 윷을 던진 상황이 주어질때, 각 상황에서 얻어지는 점수 중 최댓값을 알아보자. 각 상황에서 말 4개가 움직인다. 얻은 점수의 합이란, 각 말이 얻은 점수의 총 합을 의미하며 각 말은 마지막에 밟았던 칸의 점수를 자신의 점수로 갖는다. 말의 이동 시작점은 Start 이며, 도착지점은 End 이다. 만약, 이동해야하는 칸이 도착 지점을 넘어서거나, 도착 지점을 밟았을 경우 도착 지점의 점수를 얻고 해당 말은 판에서 제외된다. 제외된 말은 더 이상 이동할 수 없다. 예를 들어, 50점과 75점 칸을 밟을 경우, 화살표가 가리키는 방향으로 움직여야한다. 기본적으로 흰색 칸이 있는 경로로 이동한다. 이동하려고 하는 칸에 다른 말이 있는 경우 이동할 수 없다. 해당 상황의 결과값은 "-1"이다. 입력 ..

밀렵꾼

시간제한 1초 문제 밀렵꾼은 야간에 멧돼지 포획에 나섰다. 밀렵꾼이 있는 장소를 R*C의 격자판으로 표현할 수 있다. 각 격자칸에 멧돼지 정보가 주어지며, 밀렵꾼은 (R+1, 0) 부터 (R+1, C)까지 1초에 한 칸씩 움직인다. 움직일때마다 각 col 을 손전등으로 확인하고 눈 앞에 보이는 멧돼지 한 마리를 포획한다. [그림 1] 멧돼지의 정보는 총 5가지로 이루어져있다. 멧돼지의 위치 y, x 와 멧돼지가 달리고 있는 방향 d, 달리는 속력 f, 멧돼지의 무게 w 이다. 멧돼지는 바라보는 방향 d를 향해 초당 f 칸 만큼 이동한다. 멧돼지가 이동한 후 같은 격자 칸에 2마리 이상의 멧돼지가 있을 경우 가장 무게가 많이 나가는 멧돼지가 다른 멧돼지들을 먹는다. [그림 1]의 멧돼지들의 정보는 [그림 ..

조회 알고리즘 2

문제 2차원 배열에 n 명의 사람이 있다. i 번 사람에 대한 정보는 현재 위치 yi, xi 와 나이 agei 가 있다. t 초 동안 1 초에 한 번 씩 k 명의 새로운 사람들이 배열 안으로 들어온다. 그 후 만약 어떤 위치에 두 명 이상의 사람이 있을 경우 가장 나이가 많은 사람만 남고, 나머지는 배열 범위 밖으로 나가버린다. 가장 나이가 많은 사람이 둘 이상일 경우 둘 중 아무나 한 명이 남게 된다. 초기 시각이 0 초 라고 할 때, 1 초부터 t 초까지 각 시각별로 배열 안에 있는 사람들의 나이 합을 출력하여라. 입력 첫 줄에 n, k, t 가 주어진다. 두 번째 줄부터 n 줄에 걸쳐 0 초에 배열 내에 존재하는 사람들의 정보가 주어진다. n + 2 번째 줄 부터 k * t 줄에 걸쳐 새로 들어오는..

이동 알고리즘 2

문제 세로 길이 N, 가로 길이 M 인 2 차원 배열에 k 명의 사람이 있다. i 번 사람은 1 초에 di 방향으로 fi 만큼 이동하고, 배열의 끝에 도착하면 다음 이동 시 뒤로 돌아서 반대 방향으로 이동한다. t 초 후 각 사람의 위치를 1 번 사람부터 출력하여라. 이 배열의 왼쪽 위 좌표는 (1, 1) 이고, 오른쪽 아래 좌표는 (M, N) 이다. xi 는 i 번 사람의 가로 방향 위치, yi 는 i 번 사람의 세로 방향 위치를 의미한다. di 는 0, 1, 2, 3 중 하나로 주어지는데, 순서대로 상하좌우를 의미한다. 입력 첫 줄에 N, M, k, t 가 주어진다. 두 번째 줄 부터 k 줄에 걸쳐 yi, xi, di, fi 가 주어진다. (3 ≤ N, M ≤ 1,000,000,000, 1 ≤ t, ..

공기 청정기

시간제한 3초 문제 강의실의 쾌적한 공기 상태를 보장하기 위해 공기청정기를 설치했다. 어느날, 공기청정기가 제대로 동작하는지 궁금해진 영진은 현재 강의실의 공기상태를 알아내는 프로그램을 만들었다. 편의상 강의실 내부는 격자판으로 그려지고, 각 칸에는 공기의 나쁨 정도를 숫자로 표현하도록 제작되었다. 매초 확산이 먼저 일어나고 공기청정기가 작동한다 가정하자. [그림 1] 해당 프로그램에서 공기의 확산 특징은 다음과 같다. 공기는 현재 위치에서 x, y좌표와의 거리가 1이상 k이하인 위치들로 확산된다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. 만약 확산할 좌표가 존재하지 않거나, 공기청정기 위치일 경우 해당 위치로는 퍼지지 않는다. 공기의 나쁨 정도가 2k..

밀기 알고리즘 2

문제 세로 길이 N, 가로 길이 M 인 2차원 배열과 두 정수 u, d 가 주어진다. 이 배열의 0 번 부터 u 번 까지의 행은 테두리가 시계방향으로 한 칸 씩 밀리고, d 번 부터 n - 1 번 까지의 행은 테두리가 반시계방향으로 한 칸 씩 밀린 배열을 출력하여라. 여기서 테두리란 해당 범위의 상하좌우 끝 줄을 의미한다. 입력 첫 줄에 N, M 이 주어진다. 두 번째 줄부터 N 줄에 걸쳐 각 줄에 M 개씩 배열의 수가 주어진다. 마지막 줄에 u, d 가 주어진다. (4 ≤ N, M ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ N x M, 0 < u < d < N - 1) 출력 밀기가 끝난 배열을 출력한다. 입력의 예 1 5 5 2 3 1 1 4 1 3 2 3 4 1 2 7 3 7 3 2 1 4 2 1 4..

N칸 확산

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 각 칸에 들어있는 수는 1 초에 한 번 씩 자기 자신을 복사해서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. t 초가 지난 후 배열의 상태를 출력하여라. 중간 계산 과정과 최종 결과의 모든 수는 int 로 표현 가능함이 보장된다. 입력 첫 줄에 N, M, k 가 주어진다. 두 번째 줄부터 N 줄에 걸쳐 배열의 값이 주어진다. 마지막 줄에 t 가 주어진다. (1 ≤ N, M ≤ 5, 1 ≤ k ≤ 4, 1 ≤ 배열의 값 ≤ 10, 1 ≤ t ≤ 3) 출력 t 초 후 배열을 출력한다. 입력의 예 1 3 4 2 5 1 3 4 2 5..

[PART2]CH.04_구현

예제4-1 상하좌우 여행가 A는 N * N 크기의 정사각형 공간 위에 서있다. 이공간은 1 * 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며 가장 오른 쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하 ,좌 ,우 방향으로 이동할 수 있으며 시작좌표는 항상(1, 1)이다. 우리앞에는 여행가가 A가 이동할 계획서가 놓여있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D중 하나의 문자가 반복적으로 적혀 있다. 각 문자의 의미는 다음과 같다. L : 왼쪽으로 한 칸 이동 R : 오른쪽으로 한 칸 이동 U : 위로 한 칸 이동 D : 아래로 한 칸 이동 이때 여행가 A가 N × N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다 예를 들어 (1,..

반응형