티스토리 뷰

카테고리 없음

30939 Pahuljice (백준)

rectified 2025. 2. 27. 01:48

 

뭘 몰라서 틀렸나?

문제 자체는 이해했지만 어떻게 해야 저 수를 구할수 있는지에 대한 발상은 하지 못했음.

먼저 저 snowflake를 구성하는지에 대한 체크하는 함수를 만들고, 그 함수가 체크될때마다 사이즈를 올려서 최대 사이즈를 반환시켜야함.

 

뭘 실수해서 틀렸나?

실수라고 할게 없는게 어떻게 체크할지에 대한 로직이 잡히지 않아서 아이디어 구상자체에 어려움을 겪었음.

 

앞으로 방지하려면?

이런 도형류 구현문제 많이 풀어보기,

구현 관련 문제는 배열로 인덱스를 체크해서 확인하는 방법이나 관찰을 통해서 패턴을 찾고 구현해야 하는데 그 부분을 많이 연습해 봐야겠음.

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


bool is_valid_size(int x, int n, int m, const vector<string>& grid, int i, int j) {
    if (i - x < 0 || i + x >= n || j - x < 0 || j + x >= m) {
        return false;
    }
    
    for (int k = 1; k <= x; ++k) {
        // Check vertical | up and down
        if (grid[i - k][j] != '|' || grid[i + k][j] != '|') {
            return false;
        }
        // Check horizontal - left and right
        if (grid[i][j - k] != '-' || grid[i][j + k] != '-') {
            return false;
        }
        // Check diagonal \ upper left and lower right
        if (grid[i - k][j - k] != '\\' || grid[i + k][j + k] != '\\') {
            return false;
        }
        // Check diagonal / upper right and lower left
        if (grid[i - k][j + k] != '/' || grid[i + k][j - k] != '/') {
            return false;
        }
    }
    return true;
}

int find_largest_snowflake(int n, int m, const vector<string>& grid) {
    int max_size = 0;
    
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            if (grid[i][j] == '+') {
                int size = 0;
                while (is_valid_size(size + 1, n, m, grid, i, j)) {
                    size++;
                }
                max_size = max(max_size, size);
            }
        }
    }
    
    return max_size;
}

int main() {
    cin.tie(0) -> sync_with_stdio(0);
    int n, m;
    cin >> n >> m;
    vector<string> grid(n);
    
    for (int i = 0; i < n; ++i) {
        cin >> grid[i];
    }

    int result = find_largest_snowflake(n, m, grid);
    
    cout << result << endl;

    return 0;
}

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
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
글 보관함