땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • I
  • E
  • 이것이 리눅스다 with Rocky Linux9
  • D
  • ㅗ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

백준 1780 종이의 개수
Algorithm/Algorithm Problem

백준 1780 종이의 개수

2022. 3. 6. 16:55

https://www.acmicpc.net/problem/1780

 

1780번: 종이의 개수

N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수

www.acmicpc.net

종이에 써져있는 숫자가 모두 같다면 그걸 하나로 보고 아니면 9개로 자른다.

 

9개로 자른다는것은 사각형의 좌측상단. 즉 처음 시작점에 대한 좌표를 알아내면 된다.

 

각 좌표는 (x + i * n//3, y + j * n//3)라는 규칙을 가지고 있다.

 

처음에 0,0으로 시작해서 0,0이 -1, 0, 1인지 기준을 잡은다음에 n x n까지 돌리는데 

 

만약 1개라도 잘못 나오게 된다면 그 즉시 그 종이는 잘못된것이므로

 

9개로 나눠서 분할정복을 시작하고 원래 있던건 return을 통해 없애준다.

 

 

def divide_paper(x,y,n):
    std = paper[x][y]

    for i in range(x,x+n):
        for j in range(y,y+n):
            if paper[i][j] != std:
                for a in range(3):
                    for b in range(3):
                        divide_paper(x+a*n//3, y+b*n//3, n//3)
                return
    if std == -1:
        data[0] += 1
    elif std == 0:
        data[1] += 1
    else:
        data[2] += 1


n = int(input())

paper = []
data = [0,0,0]
for _ in range(n):
    paper.append(list(map(int,input().split())))

divide_paper(0,0,n)
for i in data:
    print(i)

'Algorithm > Algorithm Problem' 카테고리의 다른 글

10816 숫자 카드 2(Hashmap, Counter)  (0) 2022.04.02
백준 1764 듣보잡(set() 자료형)  (0) 2022.03.26
백준 2667 단지번호붙이기(BFS, DFS)  (0) 2022.03.06
백준 18111 마인크래프트  (0) 2022.02.17
백준 1213 & 팰린드롬 알고리즘(Palindrome Algorithm)  (0) 2022.02.17
    'Algorithm/Algorithm Problem' 카테고리의 다른 글
    • 10816 숫자 카드 2(Hashmap, Counter)
    • 백준 1764 듣보잡(set() 자료형)
    • 백준 2667 단지번호붙이기(BFS, DFS)
    • 백준 18111 마인크래프트
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바