DDDC 2020 예선 C-strawberry Cakes 해설 [pyhon]

URL


https://atcoder.jp/contests/ddcc2020-qual/tasks/ddcc2020_qual_c

문제 개요

  • h*w의 체크 케이크가 있는데 그중 K의 송어에는 딸기가 있다
  • 케이크와 grid를 병렬로 K조각
  • 으로 나눈다
  • 수출 딸기는 한 조각에 하나씩 함유
  • 코드 커밋


    #!/usr/bin/env python3
    h, w, k = map(int, input().split())
    s = []
    for i in range(h):
        s.append(input())
    out = [[0] * w for _ in range(h)]
    idx = 0
    for i in range(h):
        first_pos = -1
        first_idx = 0
        for j in range(w):
            if s[i][j] == "#":
                idx += 1
                out[i][j] = idx
                if first_pos == -1:
                    first_pos = j
                    first_idx = idx
            else:
                if first_pos != -1:
                    out[i][j] = idx
        for j in range(first_pos):
            out[i][j] = first_idx
    for i in range(h):
        for j in range(w):
            if i == 0:
                continue
            else:
                if out[i][j] == 0:
                    out[i][j] = out[i - 1][j]
    for i in range(h - 1, -1, -1):
        for j in range(w):
            if i == h - 1:
                continue
            else:
                if out[i][j] == 0:
                    out[i][j] = out[i + 1][j]
    for i in range(h):
        print(*out[i])
    

    고찰하다.

  • 이해가 안 돼서 해설문을 읽었어요.
  • grid를 위아래 좌우로 스캔하고 #이면 idx를 증가하며 #이 아니면 idx를 이전 grid와 동일하게 합니다
  • 실시 방침

  • 상하좌우 각자의 스캐닝 회전 쌍for문
  • 출력에 사용할 배열을 확보하고 idx를 삽입
  • 현재 idx가 0인지 명확히 확인
  • 메모지

  • 경기에 나갈 때 풀리지 않았던 문제 때문에 해설을 읽던 기억이 싹 살아났다
  • 한쪽 끝부터 차례대로 직사각형을 만들면 된다.
  • 가능한 작거나 크다.크면 딱 K로 나눌 수 있어요.
  • 어떻게 보면 한쪽 끝부터 순서대로 조작
  • 빌드 구상 게임
  • 참고 자료


    maspy의 해설문https://maspypy.com/atcoder-참가 소감-2019-11-23ddcc 2020 예선
  • 너무 이해하기 쉬워요.설치를 복잡하게 고려하면 위아래 좌우로 뻗으면 되는 건가요!됐어.
  • 이걸 생각하면 괴로워
  • 좋은 웹페이지 즐겨찾기