glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์™„์ „ํƒ์ƒ‰
  • bfs
  • DP
  • Baekjoon
  • ์ด๋ถ„ํƒ์ƒ‰
  • mst
  • binary search
  • Java
  • ps
  • Algorithm
  • Python
  • BOJ
  • brute-force
  • ๋™์ ๊ณ„ํš๋ฒ•
  • c++
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • boostcampaitech
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • Stack

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[BOJ] ๋ฐฑ์ค€ 14503 ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ / ๊ตฌํ˜„
Problem_Solving

[BOJ] ๋ฐฑ์ค€ 14503 ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ / ๊ตฌํ˜„

2020. 11. 6. 16:35

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฌธ์ œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


 

 

๐Ÿ’ฃ ๋ฌธ์ œ ์ดํ•ด

 

 

๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๊ฐ€ ์žˆ๋Š” ์žฅ์†Œ๋Š” N×M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นธ์€ ๋ฒฝ ๋˜๋Š” ๋นˆ ์นธ์ด๋‹ค. ์ฒญ์†Œ๊ธฐ๋Š” ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์ด ์žˆ์œผ๋ฉฐ, ์ด ๋ฐฉํ–ฅ์€ ๋™, ์„œ, ๋‚จ, ๋ถ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ง€๋„์˜ ๊ฐ ์นธ์€ (r, c)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , r์€ ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜, c๋Š” ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค.

  1. ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ฒญ์†Œํ•œ๋‹ค.
  2. ํ˜„์žฌ ์œ„์น˜์—์„œ ํ˜„์žฌ ๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ๋ฐฉํ–ฅ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค.
    1. ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ์•„์ง ์ฒญ์†Œํ•˜์ง€ ์•Š์€ ๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ ๋‹ค์Œ ํ•œ ์นธ์„ ์ „์ง„ํ•˜๊ณ  1๋ฒˆ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•œ๋‹ค.
    2. ์™ผ์ชฝ ๋ฐฉํ–ฅ์— ์ฒญ์†Œํ•  ๊ณต๊ฐ„์ด ์—†๋‹ค๋ฉด, ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ณ  2๋ฒˆ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    3. ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ฒญ์†Œ๊ฐ€ ์ด๋ฏธ ๋˜์–ด์žˆ๊ฑฐ๋‚˜ ๋ฒฝ์ธ ๊ฒฝ์šฐ์—๋Š”, ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•œ ์ฑ„๋กœ ํ•œ ์นธ ํ›„์ง„์„ ํ•˜๊ณ  2๋ฒˆ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    4. ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ฒญ์†Œ๊ฐ€ ์ด๋ฏธ ๋˜์–ด์žˆ๊ฑฐ๋‚˜ ๋ฒฝ์ด๋ฉด์„œ, ๋’ค์ชฝ ๋ฐฉํ–ฅ์ด ๋ฒฝ์ด๋ผ ํ›„์ง„๋„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ž‘๋™์„ ๋ฉˆ์ถ˜๋‹ค.

๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๋Š” ์ด๋ฏธ ์ฒญ์†Œ๋˜์–ด์žˆ๋Š” ์นธ์„ ๋˜ ์ฒญ์†Œํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฒฝ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ตฌํ˜„ ๋ฌธ์ œ์ด๊ธฐ์— ๋ฌธ์ œ ์กฐ๊ฑด์„ ์ž˜ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ–ˆ๋‹ค.

 

 

๐Ÿ’ญ ํ’€์ด ๊ณผ์ •

 

 

ํ’€์ด๋ฅผ ์ข€ ์ฐพ์•„๋ดค๋Š”๋ฐ, ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•ด์„œ BFS, DFS ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋‚ธ ๋ถ„๋“ค๋„ ๊ฝค ์žˆ์—ˆ๋‹ค.

 

๊ทผ๋ฐ ๊ทธ๋ƒฅ ๋ฐ˜๋ณต๋ฌธ๊ณผ if๋ฌธ์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์— ๋ฌธ์ œ ์กฐ๊ฑด์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•ด๋ณด์•˜๋‹ค.

 

1. ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์ฒญ์†Œ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ ์•ˆ๋˜์–ด์žˆ๋Š” ๊ณณ(0)์ด๋ผ๋ฉด ์ฒญ์†Œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.(2๋กœ ๋ณ€๊ฒฝ)

2. ์‚ฌ๋ฐฉ์ด ๋ฒฝ์ด๊ฑฐ๋‚˜ ์ฒญ์†Œ๊ฐ€ ๋˜์–ด์žˆ๋Š” ๊ณณ์ด๋ผ๋ฉด ํ›„์ง„์„ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ›„์ง„์„ ํ•œ ๊ณณ์ด ๋ฒฝ์ด๋ผ๋ฉด ์ฒญ์†Œ ์ž‘์—…์„ ์ข…๋ฃŒํ•œ๋‹ค.

   (๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœํ•ด์„œ ๊ฒฐ๊ณผ ์ถœ๋ ฅ์œผ๋กœ ์ด์–ด์ง)

3. ์œ„์˜ ์กฐ๊ฑด์— ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ๋„ค ๋ฐฉํ–ฅ ์ค‘ ์ฒญ์†Œํ•  ๊ณณ์ด ๋‚จ์•„์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ์ œ์ž๋ฆฌ์—์„œ ๋Œ๋ฉด์„œ ๋„ค ๋ฐฉํ–ฅ ์ค‘ ์ฒญ์†Œํ•  ๊ณณ์„ ์ฐพ๊ณ , ์ฐพ์•˜๋‹ค๋ฉด ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ ์ƒํƒœ๋กœ ๊ทธ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

4. ๋‹ค์‹œ 1๋ฒˆ ์ž‘์—…๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ 2๋ฒˆ์˜ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

์ž‘์„ฑ ์–ธ์–ด: C++

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

int grid[51][51] = {0, };

int findNextDir(int dir) {
    return (dir == 0) ? 3 : dir - 1;
}

int main() {
    int n = 0, m = 0;
    int r = 0, c = 0, dir = 0;
    int cleans = 0;
    // (๋ถ ๋™ ๋‚จ ์„œ) ๊ฐ ๋ฐฉํ–ฅ ๊ธฐ์ค€ ์ขŒ์ธก ์ขŒํ‘œ ์ด๋™
    int dr[4] = {0, -1, 0, 1};
    int dc[4] = {-1, 0, 1, 0};
    
    // read
    cin >> n >> m;
    cin >> r >> c >> dir;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            cin >> grid[i][j];
        }
    }
    
    while (1) {
        if (grid[r][c] == 0) {
            // ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์ฒญ์†Œ๊ฐ€ ์•ˆ๋œ ๊ณณ์ด๋ผ๋ฉด ์ฒญ์†Œ(์ฒญ์†Œํ•˜๊ณ  2๋กœ ํ‘œ์‹œ)
            grid[r][c] = 2;
            cleans += 1;
        }
        
        // ์‚ฌ๋ฐฉ์ด ์ฒญ์†Œ๋˜์—ˆ๊ฑฐ๋‚˜ ๋ฒฝ์ธ ๊ฒฝ์šฐ ํ˜„์žฌ ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•˜๊ณ  ํ›„์ง„
        if ((grid[r][c-1] == 1 || grid[r][c-1] == 2) && (grid[r][c+1] == 1 || grid[r][c+1] == 2) && (grid[r-1][c] == 1 || grid[r-1][c] == 2) && (grid[r+1][c] == 1 || grid[r+1][c] == 2)) {
            if (dir == 0)   r += 1; // ๋ถ์ชฝ์„ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ํ•œ ํ–‰ ์•„๋ž˜๋กœ
            else if (dir == 1)  c -= 1; // ๋™์ชฝ์„ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ํ•œ ์—ด ์™ผ์ชฝ์œผ๋กœ
            else if (dir == 2)  r -= 1; // ๋‚จ์ชฝ์„ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ํ•œ ํ–‰ ์œ„๋กœ
            else if (dir == 3)  c += 1; // ์„œ์ชฝ์„ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ํ•œ ์—ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ
            
            // ํ›„์ง„ํ•œ ๊ณณ์ด ๋ฒฝ์ด๋ฉด ์ •์ง€
            if (grid[r][c] == 1)    break;
            
            continue;
        }
        
        // ๋„ค ๋ฐฉํ–ฅ ์ค‘ ์ฒญ์†Œํ•  ๊ณณ์ด ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐ
        while (1) {
            // ํ˜„์žฌ ๋ฐฉํ–ฅ ๊ธฐ์ค€ ์ขŒ์ธก ์ขŒํ‘œ
            int nr = r + dr[dir];
            int nc = c + dc[dir];
            
            // ์ขŒ์ธก์— ์ฒญ์†Œํ•  ๊ณณ์ด ๋‚จ์•„์žˆ๋‹ค๋ฉด ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ณ  ์ด๋™ํ•ด์„œ ์ฒญ์†Œํ•˜๊ณ ,
            // ์ฒญ์†Œํ•  ๊ณณ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ขŒ์ธก์œผ๋กœ ํšŒ์ „ํ•˜๊ณ  ๋‹ค์‹œ ์ž‘์—… ์ˆ˜ํ–‰
            if (grid[nr][nc] == 0) {
                r = nr; c = nc;
                dir = findNextDir(dir);
                break;
            }else {
                dir = findNextDir(dir);
            }
        }
    }
    
    cout << cleans << endl;
    
    return 0;
}

 

 

 

 

๐Ÿ† ๋ฐฐ์šด ์ 

 

 

์ด๋ฒˆ์— ์šฐํ…Œ์ฝ”(์šฐ์•„ํ•œ ํ…Œํฌ ์ฝ”์Šค)์— ์ง€์›ํ•˜๋ฉด์„œ ์„ค๋ช…ํšŒ ์˜์ƒ์ด๋ž‘ ๊ฐ์ข… ํ›„๊ธฐ๋“ค์„ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ดค๋‹ค.

์ฝ”ํ…Œ์— ๋…ผ๋ฆฌ์ ์ธ ์‚ฌ๊ณ ๋ ฅ์„ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋“ค์„ ์ถœ์ œํ•˜์‹ ๋‹ค๊ณ  ํ•˜๊ธธ๋ž˜ ๊ตฌํ˜„ ๋ฌธ์ œ๋ฅผ ์ข€ ํ’€์–ด๋ด์•ผ ํ•˜๋‚˜.. ์‹ถ์–ด์„œ ๋ฐฑ์ค€์—์„œ ์ฒ˜์Œ ๋„์ „ํ•ด๋ณด๋Š” ๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

 

๋ฌธ์ œ ๋‚œ์ด๋„์— ๋น„ํ•ด ์‹œ๊ฐ„์„ ์ข€ ์˜ค๋ž˜ ์จ์„œ ๋А๋‚€ ๋ฐ”๊ฐ€ ๋งŽ๋‹ค,,,

์ผ๋‹จ ์„ฑ๊ธ‰ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜์ง€ ๋ง๊ณ  ๋จผ์ € ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋“ค์„ ์ง์ ‘ ์™„๋ฒฝํ•˜๊ฒŒ ํ’€์–ด๋‚ด ๋ณด์ž!!(์ œ๋ฐœ๐Ÿ˜ฑ)

 

๊ตฌํ˜„ ๋ฌธ์ œ๋Š” ๋”๋”์šฑ ๋ฌธ์ œ๋ฅผ ๊ผผ๊ผผํžˆ ํ™•์ธํ•˜๊ณ  ์ง์ ‘ ์†์œผ๋กœ ํ’€์–ด๋ณด๋ฉด์„œ ์˜ˆ์™ธ์‚ฌํ•ญ์„ ์ž˜ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

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

'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 1647 ๋„์‹œ ๋ถ„ํ•  ๊ณ„ํš / ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST), ํฌ๋ฃจ์Šค์นผ  (0) 2020.11.20
[BOJ] ๋ฐฑ์ค€ 1922 ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ / ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST), ํฌ๋ฃจ์Šค์นผ  (0) 2020.11.19
[BOJ] ๋ฐฑ์ค€ 2606 ๋ฐ”์ด๋Ÿฌ์Šค / ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)  (0) 2020.11.05
[2020 KAKAO BLIND RECRUITMENT] ๋ฌธ์ž์—ด ์••์ถ•  (0) 2020.09.01
[BOJ] ๋ฐฑ์ค€ 7576 ํ† ๋งˆํ†  / ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)  (0) 2020.08.31
    'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [BOJ] ๋ฐฑ์ค€ 1647 ๋„์‹œ ๋ถ„ํ•  ๊ณ„ํš / ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST), ํฌ๋ฃจ์Šค์นผ
    • [BOJ] ๋ฐฑ์ค€ 1922 ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ / ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST), ํฌ๋ฃจ์Šค์นผ
    • [BOJ] ๋ฐฑ์ค€ 2606 ๋ฐ”์ด๋Ÿฌ์Šค / ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)
    • [2020 KAKAO BLIND RECRUITMENT] ๋ฌธ์ž์—ด ์••์ถ•
    glowing713
    glowing713

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