Algorithm/알고리즘 일기

백준 14890 - 경사로

mostlyjinsonit 2019. 3. 8. 13:17
반응형

문제 출처: 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