728x90
반응형
풀기 전 생각해보기😮
- 이차원 배열 : 가로 방향, 세로 방향 탐색
- 퍼즐 공간이 세 글자일 때 vs 네 글자일 때 : ex) 0 0 0 1 1 vs 0 0 0 0 1 구분
- 퍼즐 내의 공간일 때 vs 퍼즐 경계가 포함된 공간일 때 : ex) 0 1 1 1 0 vs 0 0 1 1 1 구분
풀이🛫
T = int(input())
for _ in range(T):
# N: 정사각형 퍼즐의 크기, K: 특정 단어 길이
N, K = map(int, input().split())
puzzle = [list(map(int, input().split())) for i in range(N)]
fnd = 0
# 가로 기준 탐색
for i in range(N):
l = 0
for j in range(N):
if puzzle[i][j] == 1:
l += 1
if j == N-1:
if l == K:
fnd += 1
elif puzzle[i][j] == 0:
if l == K:
fnd += 1
l = 0
# 세로 기준 탐색
for i in range(N):
l = 0
for j in range(N):
if puzzle[j][i] == 1:
l += 1
if j == N-1:
if l == K:
fnd += 1
elif puzzle[j][i] == 0:
if l == K:
fnd += 1
l = 0
print("#"+str(_+1), fnd)
- 퍼즐의 가로 방향과 세로 방향을 기준으로 완전 탐색하는 풀이를 계획했다.
- 다만, 글자 길이(l)이 3일 때 찾았다고(fid) 하기에는 예외(글자 길이가 4일 경우) 가 발생했다.
- 따라서 글자 길이를 탐색이 중단되는 시점으로 나누어 각각의 조건문을 활용했다.
- 1) 값이 1일 때 인덱스가 경계값인 경우
- 2) 값이 0일 경우
핵심 정리🎁
for j in range(N):
if puzzle[i][j] == 1:
l += 1
if j == N-1:
if l == K:
fnd += 1
elif puzzle[i][j] == 0:
if l == K:
fnd += 1
l = 0
- 항상 배열의 인덱스 번호에 주의하도록 하자.
j == N으로 설정하고 왜 출력값이 제대로 나오지 않는 지 생각하면서 시간을 많이 소비했다.
링크💎
후기 😎
- 이차원 배열 알고리즘 문항 단련하기..!
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 10593. 가로세로 합_파이썬 (0) | 2022.08.01 |
---|---|
[SWEA] #1974. 스도쿠 검증_파이썬 (0) | 2022.07.27 |
[SWEA] #2001. 파리퇴치_파이썬 (0) | 2022.07.26 |
[SWEA] #4406. 모음이 보이지 않는 사람_파이썬, 리스트 특정 요소 모두 제거 (0) | 2022.07.18 |
[SWEA] 2007. 패턴 마디의 길이_파이썬 (0) | 2022.07.17 |