← 실전 문제

지그재그로 읽고 옮기기

C++디버깅

직사각형 배열을 위 행부터 읽어요. 첫 행은 왼쪽→오른쪽, 둘째 행은 오른쪽→왼쪽으로 읽고 이 방향을 행마다 번갈아 적용해 하나의 수열을 만들어요. 그 수열을 오른쪽으로 shift 칸 순환 이동해요. 끝을 넘은 값은 앞쪽으로 돌아와요.

최종 수열의 각 값에 1부터 시작하는 위치 번호를 곱한 합을 반환해요. int solution(vector<vector<int>> board, int shift)의 잘못된 한 줄을 고쳐 주세요.

행·열은 각각 110, 모든 행의 길이는 같고 각 값은 0100이에요. shift는 0~500, 배열은 비어 있지 않고 중복값을 허용해요. 반환형은 int예요.

예시 1: board = {{1, 2, 3}, {4, 5, 6}}, shift = 1 → 84. 읽은 수열은 1·2·3·6·5·4이고, 옮기면 4·1·2·3·6·5예요. 위치를 곱한 합은 84예요.

예시 2: board = {{1, 2}, {3, 4}}, shift = 0 → 29. 수열 1·2·4·3에 번호 1·2·3·4를 곱해 29예요.

실행 입력은 R C shift, 다음 R줄의 C 개 값이에요. main은 함수 호출용 하네스이며 합을 출력해요.

예시 입력

2 3 1
1 2 3
4 5 6

예상 결과

84

예시 입력

2 2 0
1 2
3 4

예상 결과

29
핵심 개념
  • simulation-2d: 좌표 변환과 반복 뒤의 상태를 추적해요.
  • array-2d: 행·열과 이동 가능한 칸을 구분해요.
  • stl-vector: 원소 순서와 길이를 계약에 맞게 유지해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기