본문 바로가기
[SWEA] 풀이/[SWEA] D2

[SWEA] SWEA 1979번: 어디에 단어가 들어갈 수 있을까 파이썬 풀이 - 알고리즘 코딩 문제 해설 python

by codeomni 2023. 4. 15.
반응형

 

안녕하세요.

이번 포스팅은 SWEA의 1979 문제 풀이입니다.

문제 이름은 "어디에 단어가 들어갈 수 있을까" 입니다.

 

 

풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
= int(input())
for tc in range(T):
    N, K =map(int, input().split())
    l = [list(map(int, input().split())) for i in range(N)]
    result = 0
    for col in range(N):
        cout = 0
        for row in range(N):
            if l[col][row] == 1:
                cout += 1
            if (l[col][row] == 0or (row == N-1):
                if cout == K:
                    result += 1
                cout = 0
        for row in range(N):
            if l[row][col] == 1:
                cout += 1
            if l[row][col] == 0 or row == N-1:
                if cout == K:
                    result += 1
                cout = 0
    print("#%d %d" %((tc+1), result))
cs

 

핵심: 행우선, 열우선으로 연속된 1의 값이 K랑 같다면 카운트 해줍니다.

 

1. 테스트 개수 T를 입력 받습니다.

 

2. for 문을 사용해서 테스트 개수만큼 반복합니다.

 

3. 2차원 배열 크기 N과 단어의 길이 K를 입력 받습니다.

 

4. 입력 받은 N 크기 만큼 배열을 입력받습니다.

 

5. 길이 K가 들어 갈 수 있는 최종 결과값을 저장할 변수를 선언합니다.

 

6. 배열을 탐색합니다.

 

7. 연속된 K 만큼 1이 저장되어 있는지 확인할 변수를 선언합니다.

 

8~14. 행우선

9~10. 현재 탐색한 값이 1일 경우 카운트를 더합니다.

 

11~14. 탐색한 값이 0이거나 행의 끝에 도달했을 때 길이 K와 같다면 결과값을 더합니다.

아닐 경우 카운트를 초기화합니다.

 

15~21. 열우선

16~17. 현재 탐색한 값이 1일 경우 카운트를 더합니다.

 

18~21. 탐색한 값이 0이거나 열의 끝에 도달했을 때 길이 K와 같다면 결과값을 더합니다.

아닐 경우 카운트를 초기화합니다.

댓글