| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
Tags
- Born2beroot #42
- nestjs
- 네스트JS
- 42Seoul
- Daemon
- 42
- Spring-Boot
- pipex
- 데이터중심애플리케이션설계
- ecole42
- Spring
- data-root
- django #ninja #django-ninja #장고
- dockerd
- docker
Archives
- Today
- Total
혼자 정리
14890번: 경사로 본문
C++
#include <iostream>
using namespace std;
int N, L;
int map[100][100];
int ret;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> L;
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
cin >> map[i][j];
}
}
for (int i = 0; i < N; i++){
int succ = 0;
int before = map[i][0];
int able_to_put_slope = 0;
int is_a_path = 1;
for (int j = 0; j < N; j++){
if (map[i][j] == before)
succ++;
else if (map[i][j] == before + 1){
if (able_to_put_slope == 1){
succ = 1;
before = map[i][j];
}else{
is_a_path = 0;
break ;
}
}else if (map[i][j] == before - 1){
if (j + L - 1 < N){
int flag = 1;
for (int k = 1; k <= L - 1; k++){
if (map[i][j + k] != map[i][j]){
flag = 0;
break ;
}
}
if (flag == 0){
is_a_path = 0;
break ;
}
j += L - 1;
before = map[i][j];
succ = 0;
}else{
is_a_path = 0;
break ;
}
}else{
is_a_path = 0;
break ;
}
if (succ >= L)
able_to_put_slope = 1;
else
able_to_put_slope = 0;
}
if (is_a_path == 1){
ret++;
}
}
for (int j = 0; j < N; j++){
int succ = 0;
int before = map[0][j];
int able_to_put_slope = 0;
int is_a_path = 1;
for (int i = 0; i < N; i++){
if (map[i][j] == before)
succ++;
else if (map[i][j] == before + 1){
if (able_to_put_slope == 1){
succ = 1;
before = map[i][j];
}else{
is_a_path = 0;
break ;
}
}else if (map[i][j] == before - 1){
if (i + L - 1 < N){
int flag = 1;
for (int k = 1; k <= L - 1; k++){
if (map[i + k][j] != map[i][j]){
flag = 0;
break ;
}
}
if (flag == 0){
is_a_path = 0;
break ;
}
i += L - 1;
before = map[i][j];
succ = 0;
}else{
is_a_path = 0;
break ;
}
}else{
is_a_path = 0;
break ;
}
if (succ >= L)
able_to_put_slope = 1;
else
able_to_put_slope = 0;
}
if (is_a_path == 1){
ret++;
}
}
cout << ret << "\n";
}- 구현 문제
- 플래그를 조금 과하게 사용한 것 같다.
- $O(N^{2})$

'알고리즘 문풀 > 백준' 카테고리의 다른 글
| 17219번: 비밀번호 찾기 (0) | 2021.08.07 |
|---|---|
| 14891번: 톱니바퀴 (0) | 2021.08.06 |
| 3190번: 뱀 (0) | 2021.08.05 |
| 14889번: 스타트와 링크 (0) | 2021.08.05 |
| 14888번: 연산자 끼워넣기 (0) | 2021.08.05 |