백준 1388번 파이썬

정재혁·2022년 8월 6일
0

백준 1388번 바닥 장식 문제

문제


입력 및 출력값


풀이:

해당 문제는 '-'과 '|'으로 구성된 지도가 주어졌을 때 '-'의 경우 본 행에서 '|'으로 구분된 개수를 카운트 하고 '|'의 경우 열을 기준으로 '-'으로 구분된 개수를 카운트 해 마지막으로 더해주는 방식으로 문제를 풀어야 했다.

이때 dfs, bfs를 활용하지 않고 단순 while문을 활용했는데 만약 행을 기준으로 '-'이 나왔다면 연결된 '-'가 있을 때마다 카운트 하지 않고 리스트의 인덱스 값을 늘리고 '|'이 나온다면 2차 while 문을 종료하는 방식으로 문제를 풀었다.

코드:

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

lst = [[x for x in input()] for _ in range(n)]

cnt1 = 0
for i in range(n):
    j = 0
    while(j < m):
        if lst[i][j] == '-':
            cnt1 += 1
            while j < m-1:
                if lst[i][j+1] == '-':
                    j += 1
                else:
                    break
        j +=1
cnt2 =0
for i in range(m):
    j = 0
    while (j < n):
        if lst[j][i] == '|':
            cnt2 += 1
            while j < n-1:
                if lst[j+1][i] == '|':
                    j += 1
                else:
                    break
        j += 1
print(cnt1+cnt2)
profile
저는 정재혁임니다^___^

0개의 댓글