문제 출처: https://www.acmicpc.net/problem/14890
나의 접근 방법!
1. 오르막, 내리막, 평지 일때만 생각했다! 그 외 나머지(ex. 1,3처럼 차이가 1 초과인 것들은 경사로를 못만드니)는 고려할 필요가 없다!
2. 오르막일떄(ex. 1,2) 밑변의 길이가 주어진 기울기의 밑변의 길이보다 같거나 크면(count >= L) count를 1로 초기화.
3. 내리막일때(ex. 2,1) 밑변의 길이가 0보다 같거나 크면count를 0으로 초기화.
4. 평지를 만나면 count+1.
5. 좌표의 맨 끝에 도달했을때 count가 0보다 같거나 크면 그 길을 지나갈수 있는 길로 판단 ret++ 해주면 완성.
코드를 보면 직관적이라 이해할 수 있을것이다!
static void solve() {
int i, j;
int count = 0;
for(i=0; i<N; ++i) {
count = 1;
for(j=0; j<N-1; ++j) {
if(map[i][j] == map[i][j+1]) {
count++;
}
else if(map[i][j] + 1 == map[i][j+1] && count >= M) {
count = 1;
}
else if(map[i][j] - 1 == map[i][j+1] && count >= 0) {
count = (1 - M);
}
else break;
}
if(j == (N-1) && count >= 0) {
ret++;
}
}
for(i=0; i<N; ++i) {
count = 1;
for(j=0; j<N-1; ++j) {
if(map[j][i] == map[j+1][i]) {
count++;
}
else if(map[j][i] + 1 == map[j+1][i] && count >= M) {
count = 1;
}
else if(map[j][i] - 1 == map[j+1][i] && count >= 0) {
count = (1 - M);
}
else break;
}
if(j == (N-1) && count >= 0) {
ret++;
}
}
}
나의 소스코드: https://github.com/wopuv48/Algorithm_Practice_for_Tests/tree/master/MakeDecline
'Algorithm > 알고리즘 일기' 카테고리의 다른 글
"시간복잡도"와 Big-O (0) | 2022.12.20 |
---|---|
기업 코딩테스트 문제 - 나만의 최대값 구하기. (0) | 2019.03.28 |
백준 1759 - 암호 만들기 (0) | 2019.03.05 |
백준 2178 - 미로탐색 (0) | 2019.03.03 |
백준 15683 - 감시 (0) | 2019.02.28 |