백준 1343 폴리오미노

김민영·2023년 1월 20일
0

알고리즘

목록 보기
81/125

과정

  • 입력 받은 문자열을 처음부터 순회한다.
  • X가 들어오는 경우
    • X 개수를 추가한다.
    • . 개수가 0보다 크면
      • . 개수만큼 답에 .를 추가한다.
      • . 개수를 0으로 초기화 한다.
  • .가 들어오는 경우
    • . 개수를 추가한다.
    • X 개수가 0보다 크면
      • X 개수만큼 처리한다.
      • X 개수를 0으로 초기화한다.
inp = input()


def main(inp):
    length = len(inp)
    ans_str = ""

    x_cnt = 0
    dot_cnt = 0
    for i in range(length):
        if inp[i] == "X":
            x_cnt += 1
            if dot_cnt > 0:
                ans_str += "." * dot_cnt
                dot_cnt = 0
        elif inp[i] == ".":
            dot_cnt += 1
            if x_cnt > 0:
                ans_str += "AAAA" * (x_cnt // 4)
                if x_cnt % 4 == 0:
                    pass
                elif x_cnt % 4 == 2:
                    ans_str += "BB"
                else:
                    return -1
                x_cnt = 0
    if dot_cnt > 0:
        ans_str += "." * dot_cnt
    if x_cnt > 0:
        ans_str += "AAAA" * (x_cnt // 4)
        if x_cnt % 4 == 0:
            pass
        elif x_cnt % 4 == 2:
            ans_str += "BB"
        else:
            return -1
    return ans_str


print(main(inp))
  • 중복되는 코드 제거하기 위해 함수을 자주 사용해야겠다.
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글