문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
코드
def count(mtx):
ans = 0
for lst in mtx: # i(행) 인덱스 필요 없으므로
cnt = 0
for j in range(len(lst)): # n+1 만큼(padding)
if lst[j]: # 값이 있으면
cnt += 1
else: # 0일때만 확인하면 됨 (n 범위 밖인지 확인 불필요)
if cnt == k: # k값을 바꿀게 아니면 글로벌 선언 안하고 가져다 써도 됨
ans += 1
cnt = 0 # 값 초기화 필수!!
return ans
_ = int(input())
for t in range(1, 10 + 1):
n, k = map(int, input().split())
# 범위에서 벗어나는지 확인할 필요 없도록 배열 오른쪽, 아래 padding
mtx = [list(map(int, input().split())) + [0] for _ in range(n)] + [[0] * (n+1)]
#전치 행렬
mtx_ = list(map(list, zip(*mtx)))
res = count(mtx) + count(mtx_)
print(f'#{t} {res}')
- 벽(0)을 만날 때 마다 지금까지의 1의 개수(cnt)를 반환 (cnt 초기화 필수)
- 벽은 행마다 존재하므로 for문에서 i(행)의 인덱스 대신 lst를 받아옴
- 각 리스트의 열마다 값이 있는지 확인하고
- 벽(0)을 만나면 cnt와 단어수(n) 비교
'코딩테스트 > SWEA' 카테고리의 다른 글
[SWEA] 1221 : GNS (파이썬) (1) | 2023.10.28 |
---|---|
[SWEA] 1215 : 회문1 (파이썬) (1) | 2023.10.23 |
[SWEA] 2001 : 파리 퇴치 (파이썬) (0) | 2023.10.17 |
[SWEA] 1206 : [S/W 문제해결 기본] 1일차 - View (1) | 2023.10.15 |
[SWEA] 1954 : 달팽이 숫자 (0) | 2023.10.14 |