SWEA[1979] : 어디에 단어가 들어갈 수 있을까
import sys
sys.stdin= open('input.txt')
T = int(input()) # 테스트 케이스
for tc in range(1,T+1):
n , k = map(int,input().split())
puzzle = [list(map(int,input().split())) for _ in range(n)]
possible = 0
# 행방향이 K 일때 cnt 구하기
for i in range(n):
cnt = 0
for j in range(n):
# 위치값이 1이면 넣을 수 있는 단어 수 증가
if puzzle[i][j]:
cnt += 1
# 위치값이 0 일 때
else :
# 넣을 수 있는 단어값이 k 와 같다면
if cnt == k :
possible += 1 # k길이 단어를 넣을 수 있는 횟수 증가
cnt = 0
# 행의 끝이 1로 끝났을 때 넣을 수 있는 단어값이 k 와 같다면
if cnt == k:
possible += 1 # k길이 단어를 넣을 수 있는 횟수 증가
# 열방향이 K 일때 cnt 구하기
for i in range(n):
cnt = 0
for j in range(n):
if puzzle[j][i]:
cnt += 1
else:
if cnt == k :
possible += 1
cnt = 0
if cnt == k:
possible += 1
print(f'#{tc} {possible}')
N X N 크기의 단어 퍼즐에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램이다.
possible 이라는 변수는 길이가 K인 단어가 들어갈 수 있는 자리의 수를 출력하기 위한 변수이다.
퍼즐은 행방향과 열방향을 구분해서 계산하였다.
먼저 행방향을 보면 2중 for문을 사용했다. K의 값과 일치하는지 비교하기 위해 cnt라는 변수를 첫번째 for문 밑에 초기화 시켜주었고, puzzle의 위치값이 1이면 cnt를 증가시키고, 0이라는 벽을 만나거나 행의 끝이 1로 끝났을 때의 K값과 cnt값을 비교해서 같으면 possible의 값을 1 증가시켜주었다.
열방향에서도 행방향과 같이 적용시켜 주었다.
Author And Source
이 문제에 관하여(SWEA[1979] : 어디에 단어가 들어갈 수 있을까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lse2625/SWEA1979-어디에-단어가-들어갈-수-있을까저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)