문제 이해 단계 https://www.acmicpc.net/problem/20056 NxN인 격자에 M개의 파이어볼을 쏜다. 그리고 K번만큼 이동한다. 파이어볼은 5가지의 정보를 가지고 있는데, (x좌표, y좌표, 질량, 속력, 방향)이다. 1. 자신의 방향으로 자신의 속력만큼 움직인다. 2. 이동이 끝난 후 파이어볼이 같은 칸에 있는 것이 있다면 하위에 프로세스를 실행한다. 2 - 1. 같은 칸에 있는 파이어볼을 합한다.(질량, 속력 전부) 2 - 2. 합쳐진 파이어볼은 4개로 나뉜다. 2 - 3. 각 파이어볼의 속력은 (속력의 합/개수), 질량은 (질량의 합/5)이다. 2 - 4. 방향은 합쳐진 파이어볼의 각 방향이 모두 홀수거나 짝수면 0,2,4,6 그렇지 않으면 1,3,5,7이다. 2 - 5. 질..
문제 이해 단계 https://www.acmicpc.net/problem/17144 문제가 복잡하게 써져 있는데, 최대한 간략하게 요약하자면 RxC 맵에 숫자 정보들이 나와있다. 0은 빈 곳, -1은 공기 청정기, 1이상의 수는 미세먼지의 양이다. 미세먼지는 1초당 상하좌우로 자신의 미세먼지 양 /5 만큼 퍼지고 (자기 자신의 미세먼지 - 미세먼지/5 확산한 방향 개수)로 그 자리의 미세먼지 양을 수정한다. 미세먼지가 확산될 때 공기청정기 쪽으로는 확산될 수 없다. 그리고 공기청정기가 두대가 설치되어 있는데, 공기 청정기는 무조건 1행만 존재하고 위아래 두 개로 무조건 붙어있다. 공기 청정기의 위 칸은 반시계 방향으로, 아래칸은 시계 방향으로 움직인다. 미세먼지가 확산된 이후, 위에 그려진 경로에 따라 ..
문제 이해 단계 https://www.acmicpc.net/problem/21277 설명만 읽어보면 무슨 소리인지 전혀 모르겠다. 예제 입력과 그에 대한 해설을 보니까 어느 정도 이해되더라. 퍼즐 1과 퍼즐 2의 행과 열의 크기가 정보로 들어오고, 퍼즐 1과 퍼즐 2의 배열 상태가 입력으로 또 들어온다. 두 블록을 한 액자에 넣으려고 퍼즐 1과 퍼즐 2를 90도씩 돌려가면서 최대한 넓이를 작게 만드는 것이 목표이다. 넓이를 작게 만든다는 말은 퍼즐 1의 0으로 된 부분에 퍼즐 2의 1로 된 부분이 들어가는데, 퍼즐 1의 1 부분과 퍼즐 2의 1 부분이 서로 겹치지 않는 것이다. 이때의 이때의 나올 수 있는 최소의 넓이는 구하는 문제 문제 접근 단계 이 문제에서는 제한 사항에 큰 힌트가 있다. 퍼즐의 가로..
문제 이해 단계 https://www.acmicpc.net/problem/20327 20327번: 배열 돌리기 6 크기가 2N×2N인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 8가지가 있고, 연산에는 단계 ℓ (0 ≤ ℓ 같은 부분 배열에서 상하/좌우 배열 반전 3,4번 -> 같은 부분 배..
문제 이해 단계 https://www.acmicpc.net/problem/1022 더보기 반시계 방향으로 돌아가는 소용돌이를 구현해야 한다. 특이한 점은 음수 좌표까지 존재하고 이미 그림 상의 좌표는 지정해 놨고 위치도 이미 정해져 있다는 것이다. 우리가 해야 할 것은 가장 왼쪽 위 칸(r1, c1)과 가장 오른쪽 아래 칸(r2, c2) 사이에 있는 사각형 영역을 출력하는 것이다. 출력을 할 때는 왼쪽에 공백을 넣어 오른쪽에 공백을 넣어 출력해야 한다 문제 접근 단계 해당 문제에서 고려해야 할 점이 많다. 반시계로 도는 소용돌이 구현 이러나저러나 결국에는 반시계로 도는 소용돌이를 구현해야 해당 문제를 풀 수 있다. 위에서 정해준 (0,0) 좌표에서 시작하여 반시계방향으로 도는 소용돌이를 만드는 방법을 생..
문제 이해 단계 배열 돌리기 시리즈 문제. NxM 크기인 배열에 K개의 회전 연산 (r, c, s)이 들어오는데, 이건 NxM안에 포함된 정사각형을 의미한다. 이 정사각형의 크기는 왼쪽 위 대각선은 (r-s, c-s)을 오른쪽 아래 대각선은 (r+s, c+s)를 가진다. 이 정사각형은 위에 그림처럼 회전하게 된다. K개의 회전이 끝난 후 각 행의 합 중 가장 작은 값을 답으로 출력한다. K개의 회전연산의 순서는 임의로 섞을 수 있으며, 최소 값이 나오도록 해야 한다. 문제 접근 단계 배열 돌리기 시리즈 문제인데, 돌아가는 패턴 자체는 익히 봐왔던 패턴이다. 이 패턴을 시계방향을 돌린다. 다른 점은 총 2가지인데 회전하는 정사각형이 따로 있다는 점과, 회전 순서를 섞을 수 있다는 것이다. NxM 배열에서 ..
문제 이해 단계 짧고 간결해서 아주 좋은 문제 4와 7로 구성된 숫자 중에서 입력된 K번째로 작은 수를 구하는 문제 문제 접근 단계 문제에서 건질만한 것은 K의 범위가 10^9라서 int 범위를 넘어가지 않는다는 것 정도? 그다음부터는 찾아내야 할 것 같다. 이렇게 수를 다루는 문제 같은 경우, 1번째부터 K번째 작은 수까지 한번 적어서 생각해 보는 게 낫다. 대충 어느 정도 열거해 보면 이런 식인데.. 정말 4와 7을 열거하는 것이다 보니 얼마씩 더해지고 그런 건 없는 것 같다. 그렇다면 브루트포스처럼 첫 번째부터 구해야 하는 K번째까지 일일이 세야하나? 그것도 불가능하다. K가 10^9까지이기 때문에 10^9 번 계산한다면 분명 시간초과가 날 것이다. 그렇다면 하다못해 해당 K가 몇 자릿수 인지는 알..
문제 이해 단계 우리가 익히 아는 사다리 타기인데, 입력으로 인원수 K와 가로줄의 개수 N이 들어온다. 그다음에는 사다리 타기의 결과가 문자열로 주어진 후, 사다리 타기의 모양이 주어진다. 사다리 타기의 시작은 무조건 알파벳순대로 들어온다. (ABCDE..) 사다리 타기가 종료되면 입력됐던 결과가 출력되도록 "???"를 구성하는 것이 해당 문제. 만약 구성하지 못할 경우 인원수만큼 x를 출력한다. 문제 접근 단계 사다리 타기에서 처음 상태에서 마지막 상태까지 가능한가를 따져보려면, 일단 최대한 두 상태가 근접해야 한다. 다행히도 "?????"로 들어오는 가로는 무조건 한 줄이기 때문에 직선은 하나 차이로 들어온다. 아래 그림과 같이 "???"에 최대한 가까이 붙여주면 이를 판단하기 훨씬 더 쉬워진다. 그..