Skip to content

Conversation

@hyeokbini
Copy link
Collaborator

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

PCCP ๊ธฐ์ถœ ๋ฌธ์ œ ๋ ˆ๋ฒจ 2
์„์œ  ์‹œ์ถ”

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

40๋ถ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋‚ด์šฉ์€ ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง๊ด€์ ์œผ๋กœ ๋– ์˜ค๋ฅด๋Š” ํ’€์ด๋Š” ํ•œ ๊ฐ€๋กœ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ๋ชจ๋“  ๋†’์ด์—์„œ BFS๋ฅผ ๋Œ๋ ค ๋ณด๊ณ , ์„์œ  ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•œ ๋‹ค์Œ ๋‹ต ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋กœ์ง์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์ค€ 1926 ๊ทธ๋ฆผ์˜ ํ’€์ด์™€ ์œ ์‚ฌํ•˜๊ฒ ๋„ค์š”.

์‹œํ–‰์ฐฉ์˜ค


ํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ„ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•ด์„œ ๋ชจ๋“  ์ง€์ ์—์„œ BFS๋ฅผ ๋Œ๋ฆฐ๋‹ค๋ฉด, ์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ๋Š” 100์ ์ด์ง€๋งŒ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ 0์ ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์„์œ  ์‹œ์ถ” / ์‹œ๊ฐ„์ดˆ๊ณผ
#include <bits/stdc++.h>

using namespace std;

int ans = 0;
int row, col;
int dx[4] = {0,1,-1,0};
int dy[4] = {1,0,0,-1};

void func(vector<vector<int>> land, int rowidx)
{
    int curans = 0;
    vector<vector<bool>> visited(col,vector<bool>(row,false));
    for(int i = 0; i < col; i++)
    {
        if(land[i][rowidx] == 0)
        {
            continue;
        }
        if(visited[i][rowidx] == true)
        {
            continue;
        }
        queue<pair<int,int>> Q;
        visited[i][rowidx] = true;
        Q.push({i,rowidx});
        while(!Q.empty())
        {
            pair<int,int> cur = Q.front();
            Q.pop();
            curans++;
            for(int i = 0; i < 4; i++)
            {
                int nx = cur.first + dx[i];
                int ny = cur.second + dy[i];
                if(nx < 0 || ny < 0 || nx >= col || ny >= row)
                {
                    continue;
                }
                if(land[nx][ny] == 0)
                {
                    continue;
                }
                if(visited[nx][ny] == true)
                {
                    continue;
                }
                visited[nx][ny] = true;
                Q.push({nx,ny});
            }
        }
    }
    ans = max(curans,ans);
}

int solution(vector<vector<int>> land) {
    row = land[0].size();
    col = land.size();
    // ๊ฐ€๋กœ ํ•œ ์ธ๋ฑ์Šค๋งˆ๋‹ค ๊ฒ€์‚ฌ
    for(int i = 0; i < row; i++)
    {
        func(land,i);
    }
    return ans;
}
image

์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€๋กœ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด์„œ๋Š” visited๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค ํ•ด๋„, ๋‹ค์Œ ๊ฐ€๋กœ ์ธ๋ฑ์Šค๋กœ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋Š” ๋น„ํšจ์œจ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์–ด๋–ป๊ฒŒ๋“  ์ตœ์ ํ™”๋ฅผ ์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์ €๋Š” ์‚ด์ง ์• ๋“œํ˜น..? ๋А๋‚Œ์œผ๋กœ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ํ™”


๋ฌธ์ œ์—์„œ ๊ธฐ์ค€์ ์œผ๋กœ ์žก๋Š” ๊ฒƒ์€ ํ•œ ๊ฐ€๋กœ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์„ธ๋กœ ์ธ๋ฑ์Šค์—์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์„์œ  ๋ฉ์–ด๋ฆฌ ์–‘ ์ž…๋‹ˆ๋‹ค.

land ๋ฒกํ„ฐ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ๊ฐ€์ง€๋Š” v ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์ค€ ํ›„, BFS๋ฅผ ๋ชจ๋“  ์ง€์ ์— ๋Œ€ํ•ด 1ํšŒ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์„์œ ๊ฐ€ ๊ฐ์ง€๋œ๋‹ค๋ฉด ํ•ด๋‹น ์„์œ  ๋ฉ์–ด๋ฆฌ์˜ ๊ฐ€๋กœ ์ตœ์†Œ / ์ตœ๋Œ€ ์ธ๋ฑ์Šค(ymin, ymax)๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  BFS๋ฅผ ํ†ตํ•ด ์–ป์€ ์„์œ  ๋ฉ์–ด๋ฆฌ์˜ ๋„“์ด๋ฅผ v๋ฒกํ„ฐ์˜ ymin ~ ymax ์ธ๋ฑ์Šค์— ๋ˆ„์ ํ•ด์ค๋‹ˆ๋‹ค.

image

๋ฌธ์ œ์—์„œ ์˜ˆ์‹œ๋กœ ์ฃผ๋Š” ์ด๋ฏธ์ง€์ธ๋ฐ, ์œ„ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ ๋‹ค๋ฉด

ํฌ๊ธฐ 8์งœ๋ฆฌ ์„์œ  ๋ฉ์–ด๋ฆฌ๋Š” 0-based ์ธ๋ฑ์Šค์˜ v ๋ฒกํ„ฐ๋ฅผ 0 ~ 2 ์ธ๋ฑ์Šค์—์„œ 8๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 7 ํฌ๊ธฐ๋Š” 3 ~ 6 ์ธ๋ฑ์Šค๋ฅผ 7๋งŒํผ,
2 ํฌ๊ธฐ๋Š” 6 ~ 7 ์ธ๋ฑ์Šค๋ฅผ 2๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋ชจ๋“  ์นธ์— ๋Œ€ํ•ด BFS๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด, v ๋ฒกํ„ฐ๋Š”
[8,8,8,7,7,7,9,2] ๊ฐ€ ๋˜๊ณ , ์ตœ๋Œ“๊ฐ’์ธ 9๊ฐ€ answer๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์œ„ ๋ฐฉ์‹์€ ํ•œ๋ฒˆ BFS๊ฐ€ ์ง„ํ–‰๋œ ์„์œ  ๋ฉ์–ด๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค์‹œ BFS๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š๊ณ , ๋ชจ๋“  ์นธ์„ ํ•œ๋ฒˆ์”ฉ๋งŒ ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N * M) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

์ง๊ด€์ ์œผ๋กœ ๋ณด์ด๋Š” ํ’€์ด๊ฐ€ ๋„ˆ๋ฌด ์ต์ˆ™ํ•ด ๋ณด์—ฌ์„œ ์˜คํžˆ๋ ค ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์€ ๊ฒƒ ๊ฐ™๋„ค์š”. ๊ตฌํ•˜๋Š” ๊ฐ’์˜ ๋ชฉ์ ..? ์— ๋”ฐ๋ผ ๋‹ต์„ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์„ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ”๊ฟ” ๊ฐ€๋ฉฐ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ด€์ ์„ ๋ฐฐ์›Œ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Copy link
Collaborator

@Seol-Munhyeok Seol-Munhyeok left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” ์ข€ ์•„์˜ˆ ๋‹ค๋ฅธ ํ’€์ด๋กœ ์ ‘๊ทผํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ land์˜ ๊ฐ’์„ BFS๋กœ ๊ตฌํ•œ ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด
image

์ด ์˜ˆ์‹œ์ธ ๊ฒฝ์šฐ

12 0 3 0 2 2 
12 0 3 0 0 0 
12 0 3 0 0 1 
12 0 0 2 0 0 
12 0 0 2 0 1 
12 0 0 0 0 0 
12 12 12 12 12 12 

์ด๋Ÿฐ ์‹์œผ๋กœ land ๋ฐฐ์—ด์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง์ ‘ ๋ชจ๋“  ์—ด์— ๋Œ€ํ•ด์„œ ์„ธ๋กœ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰์„ ํ•˜๋Š”๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ผ๋ฆฌ๋งŒ ๊ฐ’์„ ๋”ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— visited ๋ฐฐ์—ด์„ ์ด์šฉํ•ด ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๋„๋ก comp_id๋ฅผ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ

1 0 2 0 3 3 
1 0 2 0 0 0 
1 0 2 0 0 4 
1 0 0 5 0 0 
1 0 0 5 0 6 
1 0 0 0 0 0 
1 1 1 1 1 1 

์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ–ˆ์œผ๋ฉด ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋ชจ๋‘ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ํ•ด๋‹นํ•˜๋Š” land์˜ ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋Š” ์ข€ ์žฅํ™ฉํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.

from collections import deque

def solution(land):
    dy, dx = [-1, 0, 1, 0], [0, 1, 0, -1]
    n, m = len(land), len(land[0])
    visited = [[0 for _ in range(m)] for _ in range(n)]
    comp_id = 0
    for i in range(n):
        for j in range(m):
            if land[i][j] != 1 or visited[i][j]:
                continue
            # 1 (์„์œ )๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด BFS ์‹œ์ž‘
            comp_id += 1
            queue = deque([(i, j)])
            visited[i][j] = comp_id
            cells = [(i, j)]
            
            while queue:
                y, x = queue.popleft()
                for k in range(4):
                    ny, nx = y + dy[k], x + dx[k]
                    if 0 <= ny < n and 0 <= nx < m and not visited[ny][nx] and land[ny][nx] == 1:
                        queue.append((ny, nx))
                        visited[ny][nx] = comp_id
                        cells.append((ny, nx))
            # ์„์œ  ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐ’์„ ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋กœ ์ˆ˜์ •ํ•จ
            size = len(cells)
            for y, x in cells:
                land[y][x] = size

    # ๋ชจ๋“  ์—ด์— ๋Œ€ํ•ด์„œ ์„์œ ์˜ ์–‘์„ ๊ณ„์‚ฐ
    answer = -1
    for i in range(m):
        seen = set()
        temp = 0
        for j in range(n):
            cid = visited[j][i]
            if cid != 0 and cid not in seen:
                seen.add(cid)
                temp += land[j][i]
        answer = max(answer, temp)
    
    return answer

์‹ค์ˆ˜ ์ •๋ฆฌ

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ํ•œ ๊ฐ€์ง€ ์‹ค์ˆ˜๋ฅผ ํ•ด์„œ ์‹œ๊ฐ„์„ ์žก์•„๋จน์—ˆ๋Š”๋ฐ

์Šคํฌ๋ฆฐ์ƒท 2025-09-04 203432

๋ฌด์Šจ ์‹ค์ˆ˜๋ฅผ ํ•œ ๊ฑด์ง€ ๋ณด์ด์‹œ๋‚˜์š”?

์ œ์ผ ์œ„์— for ๋ฌธ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋กœ i, j๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉํ•ด ๋†“๊ณ  ๋ฐ‘์—์„œ ๋‹ค์‹œ i ์ธ๋ฑ์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์‹ค์ˆ˜๋Š” ์ ˆ๋Œ€๋กœ ํ•˜๋ฉด ์•ˆ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

๋ฌธ์ œ ํ‘ผ๋‹ค๊ณ  ์ˆ˜๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค!!!!!

@mj010504
Copy link
Collaborator

mj010504 commented Sep 8, 2025

์ €๋Š” ๋ฐ”๋กœ ๋ฉ์–ด๋ฆฌ ๋ณ„๋กœ index๋ฅผ ๋ถ™์—ฌ์ฃผ์–ด์„œ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค. index๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์›๋ž˜๋Š” ์„์œ ๊ฐ€ ์žˆ์„ ๋•Œ 1์ด์ง€๋งŒ -1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ฒ˜์Œ์— ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 0์€ ์„์œ ๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ index๋ฅผ 1๋ถ€ํ„ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ov๋ผ๋Š” ๋ฐฐ์—ด์— index๋ณ„๋กœ ๋ฉ์–ด๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•ด๋’€์Šต๋‹ˆ๋‹ค.
์ด์ œ ๊ฐ€๋กœ ๋ณ„๋กœ ์•„๋ž˜๋กœ ๊ฐ€๋ฉด์„œ ํ•ด๋‹น ๊ฐ’์ด index๋ผ ์ฆ‰, 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด ov[index]๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ฉ์–ด๋ฆฌ๋ฅด ๋”ํ•ด์ฃผ๊ณ , ํ•ด๋‹น ๋ฉ์–ด๋ฆฌ๋Š” ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฉ์–ด๋ฆฌ๋ฅผ ๋”ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด์„œ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.
์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค!

์„์œ  ์‹œ์ถ”
#include<bits/stdc++.h>

using namespace std;

int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};

int solution(vector<vector<int>> v) {
    vector<int> ov;
    ov.push_back(0); // ๋ถˆํ•„์š”ํ•œ ๊ฐ’
   int n = v.size(), m = v[0].size();
   int idx = 1;

   for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if(v[i][j] == 1) {
                v[i][j] = -1;
            }
        }
   }

    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if(v[i][j] == -1) {
                v[i][j] = idx;
                int size = 1; // ๋ฉ์–ด๋ฆฌ ํฌ๊ธฐ
                
                queue<pair<int, int>> q; 
                q.push({i, j});

                while(!q.empty()) {
                    auto tp = q.front(); q.pop();

                    for(int d = 0; d < 4; d++) {
                        int xx = tp.first + dx[d];
                        int yy = tp.second + dy[d];

                        if(xx >=0 && xx < n && yy >=0 && yy < m && v[xx][yy] == -1) {
                            v[xx][yy] = idx;
                            size++;
                            q.push({xx, yy});
                        }
                    }
                }
                
                ov.push_back(size);
                idx++;
            }
        }
   }

   int res = 0;
   for(int i = 0; i < m; i++) {
        vector<bool> visited(ov.size(), false);
        int sum = 0;
        for(int j = 0; j < n; j++) {
            int temp = v[j][i];
            if(temp > 0 && !visited[temp]) {
                visited[temp] = true;
                sum += ov[temp];
            }
        }

        res = max(res, sum);
   }


    return res;
}

Copy link
Collaborator

@flydongwoo flydongwoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DFS๋กœ ์„์œ  ๋ฉ์–ด๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ํฌ๊ธฐ์™€ ์—ด ๋ฒ”์œ„๋ฅผ ๊ตฌํ•œ ๋’ค, ๋ฐฐ์—ด๊ณผ prefix sum ๊ธฐ๋ฒ•์œผ๋กœ ๊ฐ ์—ด์˜ ์„์œ ๋Ÿ‰์„ ํšจ์œจ์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ํ’€์ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค

์„์œ  ์‹œ์ถ”
#include <iostream>
#include <vector>
#include <stack>
using namespace std;

int nRows, nCols;
vector<vector<int>> landMap;
vector<vector<bool>> visited;
int dx[4] = { -1, 1, 0, 0 };
int dy[4] = { 0, 0, -1, 1 };
vector<long long> colDiff;

int dfs(int x, int y, int &minCol, int &maxCol) {
    stack<pair<int,int>> st;
    st.push({x, y});
    visited[x][y] = true;
    int compSize = 0;
    while (!st.empty()) {
        auto p = st.top();
        st.pop();
        int cx = p.first;
        int cy = p.second;
        compSize++;
        if (cy < minCol) {
            minCol = cy;
        }
        if (cy > maxCol) {
            maxCol = cy;
        }
        for (int dir = 0; dir < 4; dir++) {
            int nx = cx + dx[dir];
            int ny = cy + dy[dir];
            if (nx < 0 || nx >= nRows || ny < 0 || ny >= nCols) {
                continue;
            }
            if (visited[nx][ny]) {
                continue;
            }
            if (landMap[nx][ny] == 0) {
                continue;
            }
            visited[nx][ny] = true;
            st.push({nx, ny});
        }
    }
    return compSize;
}

long long solution(vector<vector<int>> land) {
    nRows = land.size();
    nCols = land[0].size();
    landMap = land;
    visited.assign(nRows, vector<bool>(nCols, false));
    colDiff.assign(nCols + 1, 0);
    for (int i = 0; i < nRows; i++) {
        for (int j = 0; j < nCols; j++) {
            if (!visited[i][j] && landMap[i][j] == 1) {
                visited[i][j] = true;
                int minCol = j;
                int maxCol = j;
                int compSz = dfs(i, j, minCol, maxCol);
                colDiff[minCol] += compSz;
                if (maxCol + 1 < nCols) {
                    colDiff[maxCol + 1] -= compSz;
                }
            }
        }
    }
    long long ans = 0;
    long long running = 0;
    for (int col = 0; col < nCols; col++) {
        running += colDiff[col];
        if (running > ans) {
            ans = running;
        }
    }
    return ans;
}

๋ฌธ์ œ ํ‘ธ๋А๋ผ ๊ณ ์ƒํ•˜์…จ์–ด์œ 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants