1652 누울 자리를 찾아라
접근 : 가로, 세로 배열을 따로 만들고, 각 배열을 넘겨서 개수 세기. '.' 이면 카운트를 늘려가다가 'X'가 나오면 카운트가 2 이상이면 전체 개수에 +1 해주고 안되면 그냥 카운트 0으로 초기화. 주의할 점은 for문을 다 돌고 나왔을 때도 다시 한번 초기화 해주는 작업을 해줘야 한다는 것 (X가 나오지 않았을 경우를 생각해서)
풀이방법
1. 인풋으로 받은 배열(가로 버전)을 세로 버전으로 더 만들기
2. 행 기준으로 순회하면서 '.' 개수 세고 'X'나오는 순간 누울 수 있을 만큼 카운트 쌓였는지(2) 확인 후 초기화
3. 만약 행을 빠져나왔다면 다시 한번 카운트 확인해주고 초기화 하는 작업
코드 중복으로 쓰기 싫어서 두 배열을 따로 만들었지만, 굳이 세로 버전을 다시 만들 필요 없이 행이랑 열 위치만 바꿔서 확인해도 된다.
def find(li):
cnt = 0
for i in range(n):
tmp = 0
for j in range(n):
if li[i][j] == 'X':
if tmp >= 2:
cnt += 1
tmp = 0
else:
tmp += 1
if tmp >=2: #마지막 원소까지 지나왔다면
cnt += 1
return cnt
n = int(input())
r1 = [list(input()) for _ in range(n)]
r2 = [[r1[i][j] for i in range(n)] for j in range(n)]
print(find(r1),find(r2))
'Problem Solving > Baekjoon(BOJ)' 카테고리의 다른 글
[ BOJ ] 11724 연결 요소의 개수 - python 문제풀이 (0) | 2021.07.19 |
---|---|
[ BOJ ] 7562 나이트의 이동 - python 문제풀이 (0) | 2021.07.19 |
[ BOJ ] 1759 암호만들기 - python 문제풀이 (0) | 2021.07.19 |
[ BOJ ] 2309 일곱난쟁이 - python 문제풀이 (0) | 2021.07.19 |
[ BOJ ] 1260 DFS와 BFS - python 문제풀이 (0) | 2021.07.16 |
댓글