반응형
리뷰
스택을 사용하여 풀이하였다.
문제 풀이
- 테스트 케이스는 10개로 고정이다.
- 배열의 크기도 100 * 100이나 어쨌든 값을 가져와야 하기에 N으로 받아오고 N * N 크기의 배열을 초기화 해줬다.
- 칼럼을 기준으로 FOR문을 개행하고 스택을 빈 리스트로 초기화 해준다.
- 현재 값이 2일경우, 스택의 마지막 숫자가 1이면 스택에 추가해준다.
- 현재 값이 1일경우, 스택의 마지막 숫자가 2이면 스택에 추가해준다.
- 스택을 참조하여 이전 값이 1뒤에 2가 있을 경우 개수를 1개 추가해준다. (2의 개수를 구해주면 더 좋을 것 같다.)
참고 사항
IF문을 사용할때 값이 2일 경우와 ELSE를 사용했는데 그럼 0값도 노출되게 된다. IF문으로 2, 1을 정확히 체크해 줘야 한다. (그래서 첫 제출에 틀렸습니다가 노출되었다 ㅠㅠ)
정답 코드
for i in range(1, 11):
n = int(input())
lst = [list(map(int, input().split())) for _ in range(n)]
ans = 0
for j in range(n):
stack = []
for k in range(n):
if lst[k][j] == 2:
if stack and stack[-1] == 1:
stack.append(2)
if lst[k][j] == 1:
if not stack or stack[-1] == 2:
stack.append(1)
for k in range(len(stack)):
if stack[k - 1] == 1 and stack[k] == 2:
ans += 1
print(f'#{i} {ans}')
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 2178번 미로 탐색 파이썬 (0) | 2024.07.10 |
---|---|
백준 31883번 FA수의 진 파이썬 (0) | 2024.07.09 |
백준 13335번 트럭 파이썬 (0) | 2024.07.08 |
백준 10799번 쇠막대기 파이썬 (0) | 2024.07.07 |
백준 1550번 16진수 파이썬 (0) | 2024.07.07 |