전광판 테두리 점수 합계

자바스크립트 코딩테스트 문제로 border-scan 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy border-scan 함수명: scoreboardBorderSum 제한 시간: 200ms

격자의 바깥 테두리에 있는 점수만 더하는 문제입니다.

문제 설명

정수로 이루어진 2차원 배열 board가 주어집니다.

이 배열에서 가장 바깥 테두리 칸들에 적힌 숫자만 모두 더한 값을 반환하는 scoreboardBorderSum 함수를 작성하세요.

테두리 칸은 다음을 뜻합니다.

  • 첫 번째 행의 모든 칸
  • 마지막 행의 모든 칸
  • 그 사이 행들에서는 첫 번째 열과 마지막 열의 칸

제한사항

  • board의 행 개수는 1 이상 100 이하입니다.
  • board[i]의 열 개수는 1 이상 100 이하입니다.
  • 모든 행의 길이는 같습니다.
  • 각 원소는 -1,000 이상 1,000 이하의 정수입니다.
  • 행이 1개이거나 열이 1개인 경우에도 같은 칸을 중복해서 더하면 안 됩니다.

예시

  • 입력: board = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] → 출력: 40
  • 입력: board = [[3, 1, 4, 2]] → 출력: 10
  • 입력: board = [[2], [7], [1], [8]] → 출력: 18

힌트

  • 가운데 칸까지 전부 더한 뒤 빼는 방식보다, 처음부터 테두리만 골라 더하는 편이 더 단순합니다.
  • 첫 행과 마지막 행은 한 번에 처리하고, 중간 행들은 양 끝만 더해 보세요.
  • 행이 1개 또는 열이 1개일 때는 같은 칸이 겹쳐 보일 수 있습니다.

해설

이 문제는 테두리에 포함되는 칸만 정확히 골라 더하는 것이 핵심입니다.

가장 쉬운 방법은 경우를 나눠 생각하는 것입니다.

  1. 행이 1개뿐이면 그 한 행의 모든 값을 더하면 됩니다.
  2. 열이 1개뿐이면 그 한 열의 모든 값을 더하면 됩니다.
  3. 일반적인 경우에는
    • 첫 번째 행의 모든 값을 더하고
    • 마지막 행의 모든 값을 더한 뒤
    • 중간 행들은 첫 번째 값과 마지막 값만 더합니다.

예를 들어 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]에서는

  • 첫 행 합: 1 + 2 + 3 = 6
  • 마지막 행 합: 7 + 8 + 9 = 24
  • 중간 행의 양 끝: 4 + 6 = 10

따라서 전체 합은 6 + 24 + 10 = 40입니다.

이렇게 하면 각 테두리 칸을 정확히 한 번씩만 더할 수 있고, 시간 복잡도는 O(r * c) 이하로 충분합니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.