티스토리 뷰
반응형
발상의 전환만 하면 쉽게 풀 수 있는 문제
문제의 조건
1. 2차원 배열이 주어지는데
---
ㅣ
---
처럼 모래시계 모양 위치에 있는 요소들의 합 중 최대값을 구하기
여러 방법이 있겠지만 모래시계의 가운데 한 칸을 중심점으로 잡고 2중 반복문을 돌리면 쉽게 구할 수 있습니다.
배열의 크기는 6x6으로 고정이라 타임아웃 걱정은 안 해도 됩니다.
int hourglassSum(vector<vector<int>> arr) {
//배열 요소의 값 범위가 -9 ~ 9 까지라 최소값이 음수도 나올 수 있다.
//7개의 합을 구해야 하기 때문에 -9*7=-63
int iHourGlassSum = -63;
for (int i = 1; arr.size() - 1 > i; i++)
{
for (int j = 1; arr[i].size() - 1 > j; j++)
{
//모래시계의 가운데 점을 기준으로 윗줄 세칸, 가운데, 아랫줄 세칸을 임시변수에 더해준 뒤
int iTmp = 0;
iTmp += arr[i-1][j-1];
iTmp += arr[i-1][j];
iTmp += arr[i-1][j+1];
iTmp += arr[i][j];
iTmp += arr[i+1][j-1];
iTmp += arr[i+1][j];
iTmp += arr[i+1][j+1];
//더 큰 값을 저장하기
//반복문이 끝나면 가장 큰 값이 저장 되어 있을 것이다.
iHourGlassSum = max(iHourGlassSum, iTmp);
}
}
return iHourGlassSum;
}
휴...
쉬운 문제였지만 처음에는 감이 안 와서 힌트가 필요했던 문제
저도 알고리즘 문제 보자마자 각이 서서 술술 풀었으면 좋겠네요.
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[C++] HackerRank 해커랭크 Left Rotation 풀이 (0) | 2021.09.11 |
---|---|
[C++] HackerRank 해커랭크 Dynamic Array 풀이 (0) | 2021.09.11 |
[C++] HackerRank 해커랭크 Gaming Array 풀이 (0) | 2021.09.10 |
[C++] HackerRank 해커랭크 Fraudulent Activity Notifications 풀이 (0) | 2021.09.10 |
[C++] HackerRank 해커랭크 Insertion Sort Advanced Analysis 풀이 (0) | 2021.09.09 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 아이패드
- 애플
- 컴퓨터
- 영어공부
- 스위프트플레이그라운드
- 백준
- c++
- 프로그래머스
- DFS
- BFS
- 너비우선탐색
- 하드웨어
- c언어
- 다이나믹프로그래밍
- 알고리즘
- 문제풀이
- 컴퓨터공부
- hackerrank
- 컴퓨터사이언스
- 캐나다
- 캐나다생활
- dp
- 그리디
- 프로그래밍
- 기초
- C언어기초
- greedy
- 깊이우선탐색
- 코딩공부
- 해커랭크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함