Big Ben
Big Ben's Log
Big Ben
전체 방문자
오늘
어제
  • 전체 글 (80)
    • 파이썬 (23)
      • 파이썬 기초 (5)
      • 클래스 (6)
      • 자료구조 (4)
      • Tensorflow (3)
      • PyTorch (2)
      • konlpy (1)
      • anaconda (1)
    • 머신러닝 (3)
      • 선형회귀 (1)
      • Tree 기반 (1)
    • 딥러닝 (6)
      • NLP (2)
      • VISION (2)
      • TABULAR (0)
      • 딥러닝 서버 구축 (2)
    • 그래프 이론 (1)
      • 그래프마이닝 (1)
      • GNN (0)
    • 강화학습 (3)
      • 강화학습 기본 (3)
    • 인공지능 (5)
    • 추천시스템 (2)
      • 추천시스템 기초 (2)
    • Competitions (1)
    • 빅데이터 (8)
      • 하둡 (3)
      • 스파크 (4)
      • 클라우드 (1)
    • SQL (7)
      • MariaDB (2)
    • 논문 리뷰 (2)
    • 대학원 (0)
      • 데이터 사이언스 (0)
      • 경제학 (0)
    • 선형대수학 (7)
      • 선형대수 ICE BREAKING (1)
      • 벡터 (5)
      • 고윳값 (1)
    • 개인프로젝트 (0)
      • 포트폴리오 대시보드 + AI기반 주식 자동매매 (0)
    • 재테크 (1)
    • 자동차 (0)
    • 알고리즘 (11)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • Baekjoon
  • 프로그래머스
  • 알고리즘
  • 객체
  • 객체지향
  • TensorFlow
  • PYTHON
  • 머신러닝
  • 인공지능
  • sql
  • 빅데이터
  • 하둡
  • 데이터
  • class
  • mysql
  • 자료구조
  • 코딩테스트
  • 선형대수학
  • MariaDB
  • 딥러닝
  • 파이썬
  • 데이터사이언스
  • 코테
  • 프로그래밍
  • 파이썬기초
  • 백준
  • pytorch
  • AI
  • 선형대수
  • 데이터베이스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Big Ben

Big Ben's Log

[백준 2563번] 색종이 - 파이썬
알고리즘

[백준 2563번] 색종이 - 파이썬

2024. 3. 17. 17:06
반응형

백준 2d array 부분 색종이 알고리즘에 대해 풀어보겠습니다. (https://www.acmicpc.net/problem/2563)

 

 

처음 이 문제를 접했을 때 들었던 생각은

  1. 각 색종이 area를 구하여 더함
  2. 교집합 영역을 구함
  3. 하나의 교집합 영역만 전체 area에 남겨두고, 나머지는 뺌

그런데 이렇게 처리하면 예외 케이스가 많이 생겨 너무 복잡도가 증가한다는 단점이 있었습니다.

 

단순하게 생각해보면, A라는 100 x 100 매트릭스가 있다고 가정했을때,

겹치든 겹치지지 않든, 색종이가 영역을 덮고 있다면 A[i][j] 의 값을 1로 설정하고 그렇지 않다면 0으로 설정하면 불필요한 예외 처리 없이 문제를 해결 할 수 있습니다.

 

정답 코드는 다음과 같습니다.

 

if __name__ == '__main__':
    n = int(input())
    arr = [[0] * 100 for _ in range(100)]  # 0 initialization

    for _ in range(n):
        x, y = map(int, input().split())

        for i in range(x, x + 10):
            for j in range(y, y + 10):
                arr[i][j] = 1

    total = 0
    for k in range(100):
        total += arr[k].count(1)

    print(total)

 

  1. A라는 100 x 100 2d array 생성 
  2. n만큼 input을 반복해서 받고
  3. 각 input 마다 가로변과 세로변의 값을 구해서 A의 요소의 값을 할당
  4. 색종이 영역에 관련된 첫번째 반복문이 모두 끝나면, 전체 area를 구함 (count 활용)
반응형
저작자표시 (새창열림)

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

[python] 등차수열과 등차수열의 합  (0) 2024.03.24
[백준 9506] 약수 합 - 파이썬  (0) 2024.03.18
[백준 11005] 진법 변환 2 - 파이썬  (0) 2024.03.18
[백준 10798번] 세로 읽기 파이썬  (0) 2024.03.17
python 리스트 요소 한 줄로 한번에 출력 print(*arr)  (0) 2024.03.16
    '알고리즘' 카테고리의 다른 글
    • [백준 9506] 약수 합 - 파이썬
    • [백준 11005] 진법 변환 2 - 파이썬
    • [백준 10798번] 세로 읽기 파이썬
    • python 리스트 요소 한 줄로 한번에 출력 print(*arr)
    Big Ben
    Big Ben
    Data Scientist

    티스토리툴바