문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do
코드 :
#include <iostream>
#include <vector>
using namespace std;
int N, K = 0;
int num[8][8] = { 0 };
vector<std::pair<int, int>> temp;
bool check[8][8] = { false };
int maxCount = 0;
bool indexCheck = true;
int arr[4][2] = {
{-1,0},
{0, -1},
{0, 1},
{1,0}
};
// count =방문길이 , i= 행 , j = 가로 , rev = 이전값
void solution(int count, int i, int j, int rev)
{
check[i][j] = true;
//성공조건
if (maxCount < count)
{
maxCount = count;
}
//상하좌우 탐색
for (int c = 0; c < 4; c++)
{
int row = i + arr[c][0];
int col = j + arr[c][1];
if ((row >= 0 && row < N) && (col >= 0 && col < N))
{
if (check[row][col] == false)
{
if (rev > num[row][col])
{
solution(count + 1, row, col, num[row][col]);
check[row][col] = false;
}
if (indexCheck)
{
for (int k = 1; k <= K; k++)
{
if (rev > num[row][col] - k)
{
indexCheck = false;
solution(count + 1, row, col, num[row][col] - k);
indexCheck = true;
check[row][col] = false;
break;
}
}
}
}
}
}
}
int main()
{
int count = 0;
cin >> count;
int c = 1;
while (c <= count)
{
cin >> N >> K;
maxCount = 0;
int max = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cin >> num[i][j];
if (max < num[i][j])
{
temp.clear();
max = num[i][j];
}
if (max == num[i][j])
{// 최대값에 속한 인덱스만 저장
temp.push_back(std::pair<int, int>(i, j));
}
}
}
for (auto v : temp)
{
solution(1, v.first, v.second, num[v.first][v.second]);
check[v.first][v.second] = false;
}
cout << "#" << c << " " << maxCount << endl;
c++;
}
return 0;
}
전체적으로 문제를 이해하고 설계 및 코딩까지 완료하는데 걸리는 시간은 1시간 정도?
하지만 정확도가 없었다. 테스트케이스 50개중 48개만 통과한 상황이였다.
이번에도 문제를 잘못 이해한 상황이였다.
최대 K깊이만큼 깎을 수 있다 => K깊이만큼 깎아야 한다.로 이해해 버린것..ㅠ
이런 실수들을 모아서 내용을 정리좀 해야될 것 같다. 그럼 나중에 시험볼때 조금이라도 도움되지 않을까..?
P.S 문제를 다 풀고 테스트케이스에서 막히면 진짜 답답하다.. 물론 주어진 테스트케이스라면 몰라도 보이지않는 테스트케이스에서는 진짜.. 너무 힘들다.. ㅠㅠ
'algorithm > SW Expert Academy' 카테고리의 다른 글
[1차원 배열 연습 문제] 최빈수 구하기 - 1204 (0) | 2020.01.08 |
---|---|
[모의 SW 역량테스트] 디저트 카페 - 2105 (0) | 2020.01.07 |
[모의 SW 역량테스트] 점심 식사시간- 2383 (0) | 2019.12.28 |
[모의 SW 역량테스트] 벌꿀채취 - 2115 (0) | 2019.12.19 |
수영장 - 1952 (0) | 2019.12.08 |
댓글