1220. [S/W 문제해결 기본] 5일차 - Magnetic
✏️ 문제 풀이
- 테이블 상단이 N극이고 하단이 S극이기 때문에 교착상태의 형태는
N극 (1)
S극 (2)
→ 이런 형태를 띄고 있는 자석들의 갯수가 교착상태의 갯수
- 한 열에서 스택에 N극(1)이 들어 있는 상태에서 S극(2)가 들어오면 무조건 교착상태가 됨
- 100개의 행을 입력받아 2차원 리스트로 저장한 후 각 열(col)을 순회하며, 각 열의 100개의 행(row) 확인
- 스택에 N극만 저장하고, 위치가 S극일 경우 pop
- stack.pop(): 스택의 가장 위에 있는 요소를 제거하고 그 값 반환 → N극(1)
- 반환값이 항상 1이므로, cnt는 S극과 N극이 만난 횟수를 세게 됨
for tc in range(1, 11):
table = int(input())
magnetic = [list(map(int, input().split())) for _ in range(100)]
cnt = 0
# 열 순회
for col in range(table):
stack = [] # N극을 저장하는 스택
for row in range(table):
if not stack and magnetic[row][col] == 1: #스택이 비어있고 N극(1)인 경우
stack.append(1)
elif stack and magnetic[row][col] == 2: #스택에 1이 들어있고 S극(2)인 경우
cnt += stack.pop()
print(f"#{tc} {cnt}")
'코딩테스트 > SW Expert Academy' 카테고리의 다른 글
[D3] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (0) | 2024.10.21 |
---|---|
[D3] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (0) | 2024.10.21 |
[D3] 1213. [S/W 문제해결 기본] 3일차 - String (0) | 2024.10.17 |
[D3] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2024.10.17 |
[D3] 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2024.10.16 |