인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

jhd71301303's profile image
jhd71301303

asked

10-Week C++ Coding Test | Algorithm Coding Test

2-C

문제를 풀었다고 생각했는데 75%에서 틀립니다. 뭐가 문제일까요 ㅜㅜ

Written on

·

315

0

기준을 배열 내에 있는 가장 높은 높이로 잡았습니다. 강수량이 배열 내부에서 가장 높은 높이보다 같거나 크다면 안전지역이 없는 것이니 0이 나온다고 생각했습니다. 배열 내부 최대값 보다 작은 것 중에 찾으면 되겠다고 생각하고 문제에 접근했습니다. 어느 부분을 잘못생각할 걸까요? ㅠㅠ 

#include<bits/stdc++.h>
using namespace std;

int n, m,ret=0, nx, ny, x, y, ma = 0;
int max_len;
int h[104][104];
bool sc[104][104];
set<int> _set;
int dy[4] = {-1,0,1,0};
int dx[4] = {0,1,0,-1}; 

void dfs(int y, int x, int m){
    sc[y][x] = 1;
    for (int i =0; i<4; i++){
        ny = y + dy[i];
        nx = x + dx[i];
        // 인덱스로 표현하면 n보다 하나 작아야하니깐 n까지 포함시켜서 커지면 안됨
        if(nx < 0 || ny < 0 || nx >= n || ny >= n) continue;
        if(h[ny][nx] > m && !sc[ny][nx]){
            dfs(ny,nx,m);
        }
    }
}

int main(){
    cin >> n;
    for (int i =0; i < n; i++){
        for (int j = 0;j < n; j++){
            cin >> h[i][j];
            if(h[i][j] > max_len){
                max_len = h[i][j];
            }
        }
    }

    for (int i = 1 ; i < max_len; i++){
        m = i;
        int ret = 0; 
        fill(&sc[0][0],&sc[0][0] + 104*104,0);
        
        for (int i =0; i <= n; i++){
            for (int j = 0;j < n; j++){
                if(h[i][j] > m && !sc[i][j]){
                    dfs(i,j,m);
                    ret++;
                }
               
            }
        }
        if(ma <= ret) {
            ma = ret;
        }
    }
        cout << ma << "\n";

    return 0;
}
C++코테 준비 같이 해요!

Answer 2

0

와 저도 짠게 틀려서 어리둥절 하고 있었는데

높이를 1부터 반복시작해서

0으로 바꾸고

3

1 1 1

1 1 1

1 1 1

해보니까 정답으로 인정되네요 감사합니다

0

kundol님의 프로필 이미지
kundol
Instructor

안녕하세요. ㅎㅎ 정Logan님 먼저 나름 잘 짜셨는데요. 

반례는 다음과 같아요. 

3

1 1 1

1 1 1

1 1 1

 

뭐가 나와야 할까요? 1이 나와야 합니다. 아무것도 잠기지 않는 경우의 수도 생각해야 되요.  (질문자님의 코드는 0이 나옵니다.)

또한 아래 코드 <=가 아니라 < 겠죠?

감사합니다.

for (int i =0; i <= n; i++){
jhd71301303's profile image
jhd71301303

asked

Ask a question