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

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

경품 추첨

면접 대비

시간 제한1초메모리 제한512 MB

요약
못이 놓인 격자에서 공이 위에서 떨어질 때 못에 부딪히면 좌우로 갈라지며, 가장 아래 행에 도달할 확률이 가장 높은 열 번호를 구하고 그런 열이 없으면 -1을 출력한다.
난이도

보통10점 중 6점

유형
확률, 시뮬레이션, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

못과 빈칸으로 이루어진 N×MN\times M 크기의 추첨 판에서 경품 추첨을 진행하려고 한다. 추첨은 아래와 같은 과정을 순서대로 진행한다.

  1. 추첨 판 임의의 위치에 한 칸 크기의 못들이 설치된다.
  2. 추첨 판의 가장 위 행 중 한 칸에서 공 하나가 떨어진다.
  3. 만약 공 아래에 못이 없는 경우, 한 행 아래로 내려간다.
  4. 만약 공 아래에 못이 있는 경우, 같은 확률로 못의 양 옆 중 한 곳으로 이동해서 한 행 아래로 내려가려고 한다. 이 때, 이동하려는 칸 또는 이동하려는 칸의 아래 칸에 못이 있다면 그 방향으로 지나가지 못하고 걸린다. 이때는 공을 처음 위치로 되돌려 추첨을 다시 진행한다.
  5. 가장 아래 행에 공이 도착할 때까지 3번 부터 과정을 반복한다. 가장 아래 행에 도착한 공의 열 번호가 당첨 번호가 된다.

못이 박힌 후에 추첨 번호를 선택한다고 할 때, 당첨될 확률이 가장 높은 번호를 알아내 보자.

입력

첫째 줄에 추첨 판의 세로 길이 NN과 가로 길이 MM이 공백으로 구분되어 주어진다. (3≤N,M≤100)(3\leq N,M\leq 100)

둘째 줄부터 NN개의 줄에 추첨 판을 나타내는 MM개의 정수가 공백으로 구분되어 주어진다. '0'은 빈 공간, '1'은 못, '2'는 처음 공의 위치를 의미한다.

처음 공의 위치는 반드시 가장 위 행에 하나 존재한다.

가장 왼쪽 열과 가장 오른쪽 열에는 못이 설치되지 않는다.

출력

가장 당첨될 확률이 높은 번호 CC를 출력한다. 그런 번호가 여러 개라면 그중 가장 작은 번호를 출력한다. 모든 번호가 당첨될 확률이 없다면 '-1'을 출력한다. (0≤C≤M−1)(0\leq C\leq M-1)

예제3

  1. 예제 1

    입력
    4 4
    2 0 0 0
    0 0 0 0
    0 1 0 0
    0 0 0 0
    
    예상 출력
    0
    
  2. 예제 2

    입력
    3 5
    0 1 2 0 0
    0 0 1 1 0
    0 0 0 0 0
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    6 7
    0 0 0 2 0 0 0
    0 0 0 1 0 0 0
    0 1 0 0 1 0 0
    0 0 1 0 1 0 0
    0 0 0 0 0 1 0
    0 0 0 1 0 0 0
    
    예상 출력
    2