전광판 테두리 점수 합계
자바스크립트 코딩테스트 문제로 border-scan 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
격자의 바깥 테두리에 있는 점수만 더하는 문제입니다.
문제 설명
정수로 이루어진 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개뿐이면 그 한 열의 모든 값을 더하면 됩니다.
- 일반적인 경우에는
- 첫 번째 행의 모든 값을 더하고
- 마지막 행의 모든 값을 더한 뒤
- 중간 행들은 첫 번째 값과 마지막 값만 더합니다.
예를 들어 [[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]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.