일일구름 IT

[백준 1388] 바닥 장식 (Python) 본문

백준/그래프 탐색

[백준 1388] 바닥 장식 (Python)

일구름 2024. 9. 29. 18:40

문제

 

아 일단 코딩을 너무 오랜만에 해서 문법을 다 까먹었다...

이제 슬슬 취업준비 시작해야 하니까 다시 코테 준비를 좀 빡세게 해야겠다

 

처음에는 이 문제를 보고 BFS 탐색 방식을 사용해야하나 ? 라고 생각했다. 방향이 주어지지 않았다면 BFS 방법을 사용하는 것이 맞았을 것이다. 그런데 여기서 '-'는 가로 같은 행, '|'는 같은 열에 인접해 있다면 같은 나무 판자라는 방향을 지정해주었다. 그래서 굳이 BFS을 사용하지 않아도 되겠다는 생각이 들었다.

 

그리고 인접한 '-' 또는 '|'의 시작이나 중간부분이 아닌 마지막 판자의 개수만 세면 필요한 나무 만자의 개수를 구할 수 있다.

 

1. 모든 판자 순서대로 for문을 이용해 탐색

2. 오른쪽('-') 또는 아래쪽 ('|')에 같은 판자가 있는지 확인

3. 없으면 마지막으로 인접한 판자이니 개수 +1

4. 있으면 다음 판자 탐색

5. 만약 해당 판자가 가장 오른쪽 또는 가장 아래 판자면 마지막으로 인접한 판자이니 개수 +1

 

내 코드

n, m = map(int, input().split())

floor = []
for i in range(n):
    floor.append(list(input()))

def solution(n, m , floor) :
    cnt = 0
    for x in range(n):
        for y in range(m):
            if floor[x][y] == '-':
                if (y+1 < m and floor[x][y+1] != '-'):
                    cnt += 1
                elif (y == m-1):
                    cnt += 1
            if floor[x][y] == '|':
                if (x+1 < n and floor[x+1][y] != '|'):
                    cnt += 1
                elif (x == n-1):
                    cnt += 1
    return cnt

print(solution(n, m , floor))

 

오랜만에 코딩을 하니 입력받는 코드를 어떻게 작성해야 하는지 조차 기억이 안났다.. 심각

휴우,, 앞날이 불안하고 걱정이 많이 된다.. 그치만 일단 지금 내가 할 수 있는 것을 최선을 다해서 해보자

 

https://www.acmicpc.net/problem/1388