[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)

2023. 9. 28. 01:06ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/12905

๋ฌธ์ œ ์„ค๋ช…

1์™€ 0๋กœ ์ฑ„์›Œ์ง„ ํ‘œ(board)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ 1์นธ์€ 1 x 1 ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์—์„œ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ์•„ ๋„“์ด๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. (๋‹จ, ์ •์‚ฌ๊ฐํ˜•์ด๋ž€ ์ถ•์— ํ‰ํ–‰ํ•œ ์ •์‚ฌ๊ฐํ˜•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.)

์˜ˆ๋ฅผ ๋“ค์–ด

๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์€

๊ฐ€ ๋˜๋ฉฐ ๋„“์ด๋Š” 9๊ฐ€ ๋˜๋ฏ€๋กœ 9๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ํ’€์ด 1

์ˆซ์ž 1์ผ๋•Œ๋งˆ๋‹ค ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

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

vector<vector<int>> Board;

int CheckSize(int row, int col)
{
    int size = 0;
    for (int s = 0; s < Board.size(); ++s)
    {
        bool isSquare = true;
        if (row + s >= Board.size() || col + s >= Board[0].size())
            break;

        for (int n = 0; n <= s; ++n)
        {
            if (0 == Board[row + n][col + s] || 0 == Board[s + row][col + n])
            {
                isSquare = false;
                break;
            }
        }

        if (!isSquare)
            break;

        size = s;
    }

    return size+1;
}

int solution(vector<vector<int>> board)
{
    int answer = 0;
    Board = board;

    for (int r = 0; r < board.size(); ++r)
        for (int c = 0; c < board[0].size(); ++c)
        {
            if (board[r][c] == 1)
            {
                if (r + answer >= board.size() || c + answer >= board[0].size())
                    continue;

                answer = max(CheckSize(r, c), answer);
            }
        }
    answer *= answer;
    return answer;
}

์ •ํ™•ํ•˜์ง€๋งŒ ์‹œ๊ฐ„ ๋ณต์žก๋„์—์„œ ์‹คํŒจํ•œ๋‹ค.

๋‚ด ํ’€์ด 2

DP

์ ํ™”์‹

board[i][j] = 1 + min({board[i-1][j-1], board[i-1][j], board[i][j-1]});

ํ˜„์žฌ ์œ„์น˜์—์„œ ์ขŒ์ƒ, ์ขŒ, ์ƒ ์˜์—ญ ์ค‘์— ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜+1์„ ํ•ด๋‚˜๊ฐ€๋ฉด์„œ ์ตœ๋Œ€ ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ 1, 1๋ถ€ํ„ฐ ์ญ‰ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์Šต์ด ๋œ๋‹ค.

์ด์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ตœ๋Œ€ ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์ด๋‹ค.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<vector<int>> board)
{
    int answer = board[0][0];
    int r = board.size();
    int c = board[0].size();
    
    for(int i=1;i<r;i++)
    {
        for(int j=1;j<c;j++)
        {
            if(board[i][j]==1){
                board[i][j] = 1 + min({board[i-1][j-1],board[i-1][j],board[i][j-1]});
                answer = max(answer,board[i][j]);
            }
        }
    }

    return answer*answer;
}

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ(C++)  (1) 2023.10.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)  (0) 2023.10.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)  (0) 2023.09.26
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)  (0) 2023.09.22
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++)  (0) 2023.09.21
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)
Beankong_
Beankong_
๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๊ณต๋ถ€ํ•˜๋Š” ๋ธ”๋กœ๊ทธ
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (131) N
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (128)
        • Unreal Engine (0)
        • Coding Test (123)
        • Design Patteren (5)
      • ๐Ÿงญ Devlog (3) N
        • ์˜ค๋‹ต๋…ธํŠธ (2)
      • ๐Ÿ“šSeries (0)
        • Deep Dive :: Unreal Engine Base & Build (1) N
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”