For Programmer
SWEA 1220 파이썬 문제풀이(Magnetic) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD
이 문제는 약간 생각해야될 문제이다. 우선 2차원 리스트를 세로로 돌면서(행으로) 1 혹은 2인 것만 리스트에 새로 담았다. 그 후 양쪽 끝에서 안쪽으로 오면서 1, 2 있는것들을(즉, 테이블 밖으로 빠지는 것들은) 0으로 지워주었고 그 후 다시 리스트를 돌면서 교착상태의 개수를 구했다.
for order in range(1, 10 + 1):
length = int(input())
array = []
for _ in range(100):
array.append(list(map(int, input().split())))
count = 0 # 결과를 출력할 변수
for i in range(100):
temp = [] # 자석들을 담을 리스트
for j in range(100):
if array[j][i] != 0: # 만약 0이 아니라면(자석이 있다면)
temp.append(array[j][i]) # 그 자석들을 임시리스트에 넣어준다.
for left in range(len(temp)): # 왼쪽부터 돌면서 2자석은 다 0으로 바꿔준다.
if temp[left] == 2:
temp[left] = 0
else: # 단 1을 만나면 종료
break
for right in range(len(temp) - 1, -1, -1): # 오른쪽부터 돌면서 1자석은 다 0으로 바꿔준다.
if temp[right] == 1:
temp[right] = 0
else: # 단 2를 만나면 종료
break
gyochak = [] # 교착상태를 담을 임시 리스트선언
for k in range(len(temp)): # 자석개수를 돈다.
if temp[k] != 0: # 만약 0이 아니라면(앞뒤로 테이블밑으로빠진 자석들은 무시)
if k != len(temp) - 1 and temp[k] != temp[k + 1]: # 만약 마지막 인덱스가 아니고 두개의 리스트원소가 다르다면
gyochak.append(temp[k])
if k == len(temp) - 1: # 마지막 인덱스 이면서 0이 아니라면 무조건 담아준다.
gyochak.append(temp[k])
if len(gyochak) == 2: # 만약 2개가 담겼다면(1,2) 교착상태이므로
count += 1 # 개수를 1개 추가해준다.
gyochak = [] # 그 후 다시 리스트를 비워준다.
print(f'#{order} {count}')
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
SWEA 1947 파이썬 문제풀이(스도쿠 검증) (0) | 2022.02.08 |
---|---|
SWEA 1258 파이썬 문제풀이(행렬찾기) (0) | 2022.02.07 |
SWEA 1211 파이썬 문제풀이(Laddar2) (0) | 2022.02.06 |
SWEA 1210 파이썬 문제풀이(Laddar1) (0) | 2022.02.06 |
SWEA 1209 파이썬 문제풀이(Sum) (0) | 2022.02.06 |
Comments