아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

배틀쉽

시간 제한2초메모리 제한256 MB

요약
10x10 격자의 발사 순서가 주어질 때, 배 10척을 서로 닿지 않게 배치해 게임이 최대한 길게 끝나도록 하는 초기 배치를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 백트래킹, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

당신은 정보 보안 회사의 직원이다. 최근 한 고객이 프로그램을 하나 개발했는데, 이 프로그램은 자기를 쓰는 쪽이 사람인지 프로그램인지 판정한다. 당신이 맡은 일은 이 프로그램의 성능을 시험하는 것이다.

시험에는 보드게임 배틀쉽의 변형판을 쓴다. 게임은 10×1010 \times 10 격자판에서 진행한다. 게임을 시작하기 전에 한 칸짜리 전함 4척, 두 칸짜리 전함 3척, 세 칸짜리 전함 2척, 네 칸짜리 전함 1척, 모두 10척의 우주 전함을 판 위에 배치해야 한다. 각 전함은 가로나 세로로 이어진 연속한 칸을 차지한다. 서로 다른 두 전함은 칸을 공유할 수 없고, 상하좌우로도 대각선으로도 맞닿을 수 없다.

배치를 마치면 여러 라운드에 걸쳐 시험을 진행한다. 각 라운드에는 칸 하나를 마음대로 골라 그 칸에 포를 쏠 수 있다. 어떤 전함이 차지한 칸이 모두 한 번 이상 맞으면 그 전함은 침몰한다. 전함 10척이 모두 침몰하면 게임이 끝난다.

게임의 복잡도는 게임이 끝날 때까지 진행된 라운드 수다. 사람이 게임을 하면 프로그램이 할 때보다 복잡도가 커진다고 보고, 당신은 복잡도가 최대로 커지는 경우를 미리 알아 두기로 했다.

포를 쏠 칸의 순서는 이미 정해 두었고, 같은 칸을 두 번 쏘지는 않는다. 이 순서가 주어질 때 복잡도를 가장 크게 만드는 판의 초기 상태를 구하라.

입력

열 개의 줄에 각각 열 개의 정수가 주어진다. 위에서 rr번째 줄의 왼쪽에서 cc번째 수는 rr행 cc열 칸을 몇 번째 라운드에 쏘는지를 나타내며, 1 이상 100 이하다.

같은 칸을 두 번 쏘지 않으므로 1부터 100까지의 수가 각각 한 번씩 나타난다.

출력

복잡도가 가장 커지는 판의 초기 상태를 열 줄에 걸쳐 출력한다. 빈 칸은 ., 전함이 놓인 칸은 #으로 나타낸다.

복잡도를 최대로 만드는 배치가 여러 가지라면, 열 줄을 위에서부터 차례로 이어 붙인 100글자 문자열이 사전순으로 가장 앞서는 것을 출력한다. 사전순을 비교할 때 #이 .보다 앞선다고 본다.

예제2

  1. 예제 1

    입력
    1 2 3 4 5 6 7 8 9 10
    36 37 38 39 40 41 42 43 44 11
    35 64 65 66 67 68 69 70 45 12
    34 63 84 85 86 87 88 71 46 13
    33 62 83 96 97 98 89 72 47 14
    32 61 82 95 100 99 90 73 48 15
    31 60 81 94 93 92 91 74 49 16
    30 59 80 79 78 77 76 75 50 17
    29 58 57 56 55 54 53 52 51 18
    28 27 26 25 24 23 22 21 20 19
    
    예상 출력
    ####.###.#
    .........#
    ###.##.#..
    .......#.#
    #.#.......
    ....#.....
    ..........
    ..........
    ..........
    ..........
    
  2. 예제 2

    입력
    1 2 3 4 5 6 7 8 9 10
    11 12 13 14 15 16 17 18 19 20
    21 22 23 24 25 26 27 28 29 30
    31 32 33 34 35 36 37 38 39 40
    41 42 43 44 45 46 47 48 49 50
    51 52 53 54 55 56 57 58 59 60
    61 62 63 64 65 66 67 68 69 70
    71 72 73 74 75 76 77 78 79 80
    81 82 83 84 85 86 87 88 89 90
    91 92 93 94 95 96 97 98 99 100
    
    예상 출력
    ####.###.#
    .........#
    ###.##.#..
    .......#.#
    #.#.......
    ..........
    ..........
    ..........
    ..........
    .........#