SWEA (SW Expert Academy)/D2

[SWEA/D2] 1979 어디에 단어가 들어갈 수 있을까

2023. 4. 21. 18:33

문제 바로가기

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

나의 코드 및 설명 01

  • 두 번째로 풀이한 소스이다. 이게 더 깔끔하고 좋은 것 같다.
t = int(input())
for test_case in range(1, t+1):
    n, k = map(int, input().split()) #퍼즐 가로 세로 : n  단어 길이 : k
    board = []
    for _ in range(n):
        board.append(list(map(int, input().split())))
    
    garo_zip = []
    sero_zip = []

    for i in range(n):

        garo_count = 0
        sero_count = 0

        for j in range(n):
            #가로 분석
            if board[i][j] == 1: #좌표의 값이 1이면 
                garo_count += 1 #가로 카운트 1 증가
            elif board[i][j] == 0: #좌표의 값이 0이면
                garo_zip.append(garo_count) #현재까지 저장된 가로 카운트 garo_zip에 저장
                garo_count = 0 #가로 카운트 0으로 초기화

            #세로 분석
            if board[j][i] == 1: #좌표의 값이 1이면
                sero_count += 1 #세로 카운트 1 증가
            elif board[j][i] == 0: #좌표의 값이 0이면
                sero_zip.append(sero_count) #현재까지 저장된 세로 카운트 sero_zip에 저장
                sero_count = 0 #세로 카운트 0으로 초기화

        garo_zip.append(garo_count) #가로 한 줄 for문을 다 돌면 현재 가로 카운트 garo_zip에 저장
        sero_zip.append(sero_count) #세로 한 줄 for문을 다 돌면 현재 세로 카운트 seor_zip에 저장
            
    print("#{} {}".format(test_case, garo_zip.count(k) + sero_zip.count(k)))

나의 코드 및 설명 02

  • 첫 번째로 풀이한 소스이다. visited 리스트에 연속된 1의 개수를 저장받고, k가 넘어갈 시에는 다시 1을 저장하는 방법으로 풀이하였다. 
t = int(input())
for test_case in range(1, t+1):
    n, k = map(int, input().split())
    board = []
    for _ in range(n):
        board.append(list(map(int, input().split())))
    garo_visited = [[0] * n for _ in range(n)] 
    for i in range(n):
        garo_check = 1
        for j in range(n):
            if board[i][j] == 1:
                if garo_check > k:
                    garo_check = 1
                    garo_visited[i][j-1] -= 1
                    continue
                else:
                    garo_visited[i][j] = garo_check
                    garo_check += 1
            if board[i][j] == 0:
                garo_check = 1
                
    sero_visited = [[0] * n for _ in range(n)]
    for i in range(n):
        sero_check = 1
        for j in range(n):
            if board[j][i] == 1:
                if sero_check > k:
                    sero_check = 1
                    sero_visited[j-1][i] -= 1
                    continue
                else:
                    sero_visited[j][i] = sero_check
                    sero_check += 1
            if board[j][i] == 0:
                sero_check = 1
    ans = 0
    for i in range(n):
        ans += garo_visited[i].count(k)
    for i in range(n):
        ans += sero_visited[i].count(k)
    print("#{} {}".format(test_case, ans))

피드백

첫 번째로 풀이했을 때는 어찌하다가 맞은 것 같다. 두 번째로 풀이할 때 좀 헤맸는데, 고민 끝에 작성한 두 번째 소스 코드가 더 만족스럽다. 

'SWEA (SW Expert Academy) > D2' 카테고리의 다른 글

[SWEA/D2] 1954 달팽이 숫자 / BFS  (0) 2023.04.22
[SWEA/D2] 1959 두 개의 숫자열  (0) 2023.04.22
[SWEA/D2] 1974 스도쿠 검증  (0) 2023.04.21
[SWEA/D2] 2001 파리 퇴치  (0) 2023.04.21
[SWEA/D2] 1859 백만 장자 프로젝트  (0) 2023.04.21
'SWEA (SW Expert Academy)/D2' 카테고리의 다른 글
  • [SWEA/D2] 1959 두 개의 숫자열
  • [SWEA/D2] 1974 스도쿠 검증
  • [SWEA/D2] 2001 파리 퇴치
  • [SWEA/D2] 1859 백만 장자 프로젝트
hellosonic
hellosonic
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • 백준 14891
  • 구현
  • 프로그래머스 데브코스
  • 백준 1157
  • 그리디
  • 이코테
  • SWEA/D3
  • SWEA
  • 파이썬 11478
  • 리액트 todolist
  • 백준 2999
  • 프로그래머스
  • javascript ux
  • 파이썬 1436
  • 백준
  • SWEA D2
  • 국비지원교육
  • JS
  • 파이썬
  • SWEA D3
  • SWEA 파이썬
  • 파이썬 1946
  • 프론트엔드 데브코스
  • 자바스크립트 기본기
  • 파이썬 2529
  • 코딩부트캠프
  • 자바스크립트
  • 백준 5212
  • 백준 18870
  • 파이썬 1269

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[SWEA/D2] 1979 어디에 단어가 들어갈 수 있을까
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.