728x90
1. 문제
- 임의의 2차원 배열(6x6)이 주어진다.
- 위의 문제에서 주어진 패턴에 해당하는 인덱스의 값들을 모두 더한다.
- 각 패턴별 더한 값들중 가장 높은 값을 결과로 도출한다.
2. 1차 풀이
2.1 풀이 과정
function hourglassSum(arr) {
// Write your code here
let hourGlassSumArr = [];
const maximumMoveXYPos = 4;
for (let yPos = 0; yPos < maximumMoveXYPos; yPos++) {
for (let xPos = 0; xPos < maximumMoveXYPos; xPos++) {
let sum = arr[xPos][yPos] + arr[xPos + 1][yPos] + arr[xPos + 2][yPos]
+ arr[xPos + 1][yPos + 1] + arr[xPos + 2][yPos] + arr[xPos + 2][yPos + 1]
+ arr[xPos + 2][yPos + 2];
hourGlassSumArr.push(sum);
}
}
console.log(hourGlassSumArr);
return Math.max(...hourGlassSumArr);
}
풀이방법은 다음과 같다.
- 6x6의 2차원 배열을 주어진 패턴들로 탐색한다
- 패턴이 3x3의 크기이기에, 오른쪽으로든 아래로든 4칸만 움직인다.
- x, y축을 중첩된 반복문을 통해서 모든 패턴의 총계값을 구한다.
- 구한 총계갚 중 가장 큰 숫자를 도출한다.
2.2 풀이 결과
이런.. 2차원 그래프의 x, y축 순서와 혼동하여
2차원 배열의 첫번째 인덱스와 두번째 인덱스의 값을 거꾸로 넣어주고 있었다.
각 패턴별 총계 값은 당연히 다르게 나왔다.
3. 2차 풀이
3.1 풀이 과정
이제 순서가 잘못 삽입된 두 인덱스를 서로 바꿔주면 된다.
2차원 배열의 첫번째 인덱스는 몇번째 행인지, 두번째 인덱스는 몇번째 열인지를 선택하여
배열에서 패턴에 해당하는 각 위치의 값을 가져오도록 바꾸어 주었다.
function hourglassSum(arr) {
// Write your code here
let hourGlassSumArr = [];
const maximumMoveXYPos = 4;
for (let yPos = 0; yPos < maximumMoveXYPos; yPos++) {
for (let xPos = 0; xPos < maximumMoveXYPos; xPos++) {
let sum = arr[yPos][xPos] + arr[yPos][xPos + 1] + arr[yPos][xPos + 2]
+ arr[yPos + 1][xPos + 1] + arr[yPos+2][xPos] + arr[yPos +2][xPos + 1]
+ arr[yPos + 2][xPos + 2];
hourGlassSumArr.push(sum);
}
}
console.log(hourGlassSumArr);
return Math.max(...hourGlassSumArr);
}
3.2 풀이 결과
이러하여 모든 테스트케이스를 통과하였다.
HackerRank에서 제공하는 배열의 첫번째 문제인 만큼 몸풀기 난이도 정도로 무난하게 정답을 통과할 수 있었다.
반응형
'Coding Test > HackerRank' 카테고리의 다른 글
HackerRank 문제풀이 - 7 (Minumum Swaps 2) (0) | 2022.12.17 |
---|---|
HackerRank 문제풀이 - 6 (Left Rotation) (0) | 2022.12.17 |
HackerRank 문제풀이 - 4 (Jumping on the Clouds) (0) | 2022.12.05 |
HackerRank 문제풀이 - 3 (Repeated String) (0) | 2022.06.04 |
HackerRank 문제풀이 - 2 (Counting Valleys) (0) | 2022.02.13 |