deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

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

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

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

์ธ๊ธฐ ๊ธ€

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

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim
Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 1743. ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ

[python] ๋ฐฑ์ค€ - 1743. ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ
Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 1743. ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ

2020. 9. 7. 08:39
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

S1 | BFS

์ด๋ฒˆ์—๋Š” 2์ฐจ์›๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ณ  set()์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

๊ฐ๊ฐ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ํ•˜๋‚˜ ์„ ํƒํ•ด ์ƒํ•˜์ขŒ์šฐ BFSํƒ์ƒ‰์„ ํ•œ๋‹ค.

์ฃผ๋ณ€์˜ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์„ ํƒํ•  ๋•Œ๋งˆ๋‹ค visited ์— add ํ•ด์ค€๋‹ค.

๋˜ count + 1 ์„ ํ•ด์ค˜์„œ ์“ฐ๋ ˆ๊ธฐ ๋”๋ฏธ์˜ ํฌ๊ธฐ๋ฅผ answer ์— ๋‹ด๋Š”๋‹ค.

 

๐Ÿ’จ set() ์„ ์“ฐ๋Š” ์ด์œ 
 if tmp in set() : ์ด๋ ‡๊ฒŒ tmp๊ฐ€ set()์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1) ์ด๋‹ค.
ํ•˜์ง€๋งŒ if tmp in list : list์˜ ๊ฒฝ์šฐ O(n) ์ด๋‹ค.

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

import sys
from collections import deque


def bfs(x, y):
    q = deque()
    q.append((x, y))
    cnt = 1  # ์‹œ์ž‘ํ•œ ์“ฐ๋ ˆ๊ธฐ ํฌํ•จ
    while q:
        x, y = q.popleft()
        for k in range(4):
            nx = x + dx[k]
            ny = y + dy[k]
            if 1 <= nx < N + 1 and 1 <= ny < M + 1:
                if (nx, ny) in trashSet and (nx, ny) not in visited:
                    cnt += 1
                    q.append((nx, ny))
                    visited.add((nx, ny))
    else:
        answer.append(cnt)


if __name__ == "__main__":
    N, M, K = map(int, sys.stdin.readline().split())

    # set() ์„ ์“ฐ๋Š” ์ด์œ 
    # if tmp in set(): ์ด๋ ‡๊ฒŒ tmp๊ฐ€ set()์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ด๋‹ค.
    # ํ•˜์ง€๋งŒ if tmp in list: list์˜ ๊ฒฝ์šฐ O(n)์ด๋‹ค.
    trashSet = set()  # ์Œ์‹๋ฌผ ์…‹
    visited = set()  # ๋ฐฉ๋ฌธ ์ฒดํฌ

    for _ in range(K):
        r, c = map(int, sys.stdin.readline().split())
        trashSet.add((r, c))

    answer = []
    dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
    for trash in trashSet:
        if (trash[0], trash[1]) not in visited:  # ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋”ฐ๋ฉด
            visited.add((trash[0], trash[1]))  # ๋ฐฉ๋ฌธ ์ถ”๊ฐ€
            bfs(trash[0], trash[1])  # BFS GOGO!

    print(max(answer))

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/1743

 

1743๋ฒˆ: ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— ํ†ต๋กœ์˜ ์„ธ๋กœ ๊ธธ์ด N(1 โ‰ค N โ‰ค 100)๊ณผ ๊ฐ€๋กœ ๊ธธ์ด M(1 โ‰ค M โ‰ค 100) ๊ทธ๋ฆฌ๊ณ  ์Œ์‹๋ฌผ ์“ฐ๋ ˆ๊ธฐ์˜ ๊ฐœ์ˆ˜ K(1 โ‰ค K โ‰ค 10,000)์ด ์ฃผ์–ด์ง„๋‹ค.  ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ K๊ฐœ์˜ ์ค„์— ์Œ์‹๋ฌผ์ด ๋–จ์–ด์ง„ ์ขŒํ‘œ (r, c)๊ฐ€ ์ฃผ์–ด์ง„๏ฟฝ

www.acmicpc.net

๋ฌธ์ œ

์ฝ”๋ ˆ์Šค์ฝ” ์ฝ˜๋„๋ฏธ๋‹ˆ์—„ 8์ธต์€ ํ•™์ƒ๋“ค์ด 3๋ผ์˜ ์‹์‚ฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡๋ช‡ ๋น„์–‘์‹ฌ์ ์ธ ํ•™์ƒ๋“ค์˜ ๋งŒํ–‰์œผ๋กœ ์Œ์‹๋ฌผ์ด ํ†ต๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ๋–จ์–ด์ ธ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์Œ์‹๋ฌผ๋“ค์€ ๊ทผ์ฒ˜์— ์žˆ๋Š” ๊ฒƒ๋ผ๋ฆฌ ๋ญ‰์น˜๊ฒŒ ๋ผ์„œ ํฐ ์Œ์‹๋ฌผ ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๋œ๋‹ค. 

์ด ๋ฌธ์ œ๋ฅผ ์ถœ์ œํ•œ ์„ ์ƒ๋‹˜์€ ๊ฐœ์ธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์Œ์‹๋ฌผ์„ ์‹ค๋‚ดํ™”์— ๋ฌปํžˆ๋Š” ๊ฒƒ์„ ์ •๋ง ์ง„์ •์œผ๋กœ ์‹ซ์–ดํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์•ผ ํ•  ๋‹ต์€ ์ด ๋ฌธ์ œ๋ฅผ ๋‚ธ ์กฐ๊ต๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. 

ํ†ต๋กœ์— ๋–จ์–ด์ง„ ์Œ์‹๋ฌผ์„ ํ”ผํ•ด๊ฐ€๊ธฐ๋ž€ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ์ƒ๋‹˜์€ ๋–จ์–ด์ง„ ์Œ์‹๋ฌผ ์ค‘์— ์ œ์ผ ํฐ ์Œ์‹๋ฌผ๋งŒ์€ ํ”ผํ•ด ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. 

์„ ์ƒ๋‹˜์„ ๋„์™€ ์ œ์ผ ํฐ ์Œ์‹๋ฌผ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•ด์„œ โ€œ10ra"๋ฅผ ์™ธ์น˜์ง€ ์•Š๊ฒŒ ๋„์™€์ฃผ์ž.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ†ต๋กœ์˜ ์„ธ๋กœ ๊ธธ์ด N(1 โ‰ค N โ‰ค 100)๊ณผ ๊ฐ€๋กœ ๊ธธ์ด M(1 โ‰ค M โ‰ค 100) ๊ทธ๋ฆฌ๊ณ  ์Œ์‹๋ฌผ ์“ฐ๋ ˆ๊ธฐ์˜ ๊ฐœ์ˆ˜ K(1 โ‰ค K โ‰ค 10,000)์ด ์ฃผ์–ด์ง„๋‹ค.  ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ K๊ฐœ์˜ ์ค„์— ์Œ์‹๋ฌผ์ด ๋–จ์–ด์ง„ ์ขŒํ‘œ (r, c)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ขŒํ‘œ (r, c)์˜ r์€ ์œ„์—์„œ๋ถ€ํ„ฐ, c๋Š” ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ๊ฐ€ ๊ธฐ์ค€์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์Œ์‹๋ฌผ ์ค‘ ๊ฐ€์žฅ ํฐ ์Œ์‹๋ฌผ์˜ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.

ํžŒํŠธ

# . . .
  . # # .
  # # . .
์œ„์™€ ๊ฐ™์ด ์Œ์‹๋ฌผ์ด ๋–จ์–ด์ ธ์žˆ๊ณ  ์ œ์ผํฐ ์Œ์‹๋ฌผ์˜ ํฌ๊ธฐ๋Š” 4๊ฐ€ ๋œ๋‹ค. (์ธ์ ‘ํ•œ ๊ฒƒ์€ ๋ถ™์–ด์„œ ํฌ๊ฒŒ ๋œ๋‹ค๊ณ  ๋‚˜์™€ ์žˆ์Œ. ๋Œ€๊ฐ์„ ์œผ๋กœ๋Š” ์Œ์‹๋ฌผ ๋ผ๋ฆฌ ๋ถ™์„์ˆ˜ ์—†๊ณ  ์ƒํ•˜์ขŒ์šฐ๋กœ๋งŒ ๋ถ™์„์ˆ˜ ์žˆ๋‹ค.)

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

'Algorithm Problem > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[python] ๋ฐฑ์ค€ - 2343. ๊ธฐํƒ€ ๋ ˆ์Šจ  (5) 2020.09.09
[python] ๋ฐฑ์ค€ - 1926. ๊ทธ๋ฆผ  (0) 2020.09.08
[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์™ธ๋ฒฝ ์ ๊ฒ€(2020 KAKAO BLIND RECRUITMENT)  (0) 2020.09.06
[python] ๋ฐฑ์ค€ - 11052. ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ / 16194. ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ 2  (0) 2020.09.05
[python] ๋ฐฑ์ค€ - 1722. ์ˆœ์—ด์˜ ์ˆœ์„œ  (0) 2020.09.04
  • ๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ
  • ๐Ÿ“•๋ฌธ์ œ ํ™•์ธ
'Algorithm Problem/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [python] ๋ฐฑ์ค€ - 2343. ๊ธฐํƒ€ ๋ ˆ์Šจ
  • [python] ๋ฐฑ์ค€ - 1926. ๊ทธ๋ฆผ
  • [python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์™ธ๋ฒฝ ์ ๊ฒ€(2020 KAKAO BLIND RECRUITMENT)
  • [python] ๋ฐฑ์ค€ - 11052. ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ / 16194. ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ 2
deo2kim
deo2kim
์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.