일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- HTML
- 쿠버네티스
- node.js
- 알고리즘
- 솔리디티
- 타입스크립트
- 웹
- 자바스크립트
- es6
- CSS
- k8s
- 백엔드
- TypeScript
- next.js
- BFS
- 이더리움
- 가상화
- JavaScript
- 클라우드
- 이슈
- 리액트
- 컴퓨터공학
- 백준
- kubernetes
- AWS
- docker
- 파이썬
- react
- 프론트엔드
- 블록체인
Archives
- Today
- Total
즐겁게, 코드
BOJ 2667번 - 단지번호붙이기 본문
분명 테케는 통과했고 코드에도 문제가 없는데 계속 틀려 의아했다.
원인은 바로 탐색을 시작하는 첫 번째 노드를 방문했다고 체크하지 않아서였는데, 다행히도 금방 실수를 캐치할 수 있었다.
탐색을 시작하는 첫 번째 노드도 방문했음을 체크해주는걸 잊지 말고...
타입 캐스팅을 좀 더 세련되게 하는 방법이나 찾아봐야겠다 @__@
[정답 코드 - Python]
from collections import deque
T = int(input())
board = []
visited = [[False] * T for _ in range(T)]
apartCount = 0
countList = []
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
def BFS(start_node):
s = deque()
s.append(start_node)
count = 1
while len(s) != 0:
node = s.popleft()
visited[int(node[0])][int(node[1])] = True
for i in range(4):
nextY = int(node[0]) + dy[i]
nextX = int(node[1]) + dx[i]
if nextY >= T or nextY < 0 or nextX >= T or nextX < 0 or visited[
nextY][nextX] == True or board[nextY][nextX] == '0':
continue
else:
count += 1
visited[nextY][nextX] = True
s.append([nextY, nextX])
return count
for i in range(T):
board.append(list(input()))
for i in range(T):
for j in range(T):
if board[i][j] == '1' and visited[i][j] == False:
apartCount += 1
countList.append(BFS([i, j]))
print(apartCount)
countList.sort()
for i in range(len(countList)):
print(countList[i])
반응형
'💯 알고리즘 > 백준 온라인 저지' 카테고리의 다른 글
BOJ 9047번 - 6174 (0) | 2021.04.10 |
---|---|
BOJ 2178번 - 미로 탐색 (0) | 2021.04.02 |
BOJ 1012번: 유기농 배추 (0) | 2021.03.13 |
BOJ 1932번 - 정수 삼각형 (1) | 2021.03.10 |
BOJ 15624번 - 피보나치 수 7 (0) | 2021.03.08 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆