https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유니온 파인드
  • counter
  • 다이나믹 프로그래밍
  • 다익스트라
  • 12015
  • 그리디
  • 다이나믹프로그래밍
  • 재귀
  • 재귀함수
  • MST
  • python3
  • 백준
  • 이분탐색
  • DFS
  • heapq
  • 이분 탐색
  • 그래프
  • 유클리드호제법
  • 최단경로
  • 최대공약수
  • 프로그래머스
  • 백트래킹
  • LIS
  • DP
  • Python
  • 큐
  • BFS
  • 파이썬
  • 스택
  • 최소힙

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

백준 1780 풀이 (종이의 개수, 재귀, 파이썬)
알고리즘

백준 1780 풀이 (종이의 개수, 재귀, 파이썬)

2021. 3. 12. 20:28

이번에는 이전보다 더 분할하는 문제를 풀어본다. 문제는 그냥 머랄까 이전에는 반을 나누었다면 이번에는 3등분하는 문제였다. 사실 코드적인 부분이 많이 달라지지 않았다.

저번에는 반으로 나누는 과정을 조금 무식하게 풀었는데, 이번에는 3등분을 해야하다보니 조금더 깔끔하게 처리하려고 노력했다.

 

왼쪽은 이전에 리스트를 여러개 놓고 쓰던 방식이라면 오른쪽은 for구문을 통해 조금더 복잡하지만 메모리를 적게 먹는다.

막상 비교하려고 놓고 보니 별로 큰 차이가 없어보이네;;ㅎㅎ

 

여튼 이러한 방식으로 풀면 되는거라 이전 문제와 크게 다른점이 없었다.

처음 제출했을때 틀렸다고 해서 당황했는데 알고보니 0개수를 1개수랑 바꿔놓고 풀었었다. 정신 차리고 풀어야 겠다.

import sys
n = int(sys.stdin.readline())

nr1 = 0
n0 = 0
n1 = 0
def check(p):
    global nr1
    global n0
    global n1
    f = p[0][0]
    wrong = 0
    for i in range(len(p)):
        for j in p[i]:
            if f != j:
                wrong = 1
                break
        if wrong == 1:
            break
    if wrong == 1:#중간에 노이즈 있으므로 나눠줘야함.
        for _ in range(0,len(p),len(p)//3):
            a=[] 
            b=[]
            c=[]
            for i in range(_, _+len(p)//3):
                a.append(p[i][:len(p)//3])
                b.append(p[i][len(p)//3:len(p)//3*2])
                c.append(p[i][len(p)//3*2:])
            check(a)
            check(b)
            check(c)
    else:
        if f == -1:
            nr1 += 1
        elif f == 0:
            n0 += 1
        else:
            n1 += 1
p = []
for _ in range(n):
    p.append(list(map(int, sys.stdin.readline().split())))
check(p)

print(nr1)
print(n0)
print(n1)

'알고리즘' 카테고리의 다른 글

#4 알고리즘 공부 3/12 리뷰  (0) 2021.03.12
백준 1629 풀이 (곱셈, 분할정복, 파이썬)  (0) 2021.03.12
백준 1992 풀이 (쿼드트리, 파이썬)  (0) 2021.03.12
백준 2630 풀이 (색종이 만들기, 쿼드트리, 분할정복, 파이썬)  (0) 2021.03.12
백준 5430 풀이 (AC, 큐, 파이썬)  (0) 2021.03.11
    '알고리즘' 카테고리의 다른 글
    • #4 알고리즘 공부 3/12 리뷰
    • 백준 1629 풀이 (곱셈, 분할정복, 파이썬)
    • 백준 1992 풀이 (쿼드트리, 파이썬)
    • 백준 2630 풀이 (색종이 만들기, 쿼드트리, 분할정복, 파이썬)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바