[코드트리] 금 채굴하기 , python 문제 풀이

2022. 7. 18. 16:36· Knowledge/Python
목차
  1. 문제

안녕하세요 오늘은 완전 탐색 알고리즘 문제를 하나 가져와 봤습니다. python은 사용하면 사용할수록 정말 편하고 잘 만든 언어라는 게 느껴지네요 시작하겠습니다.


문제

n×n크기의 이차원 영역에 파묻힌 금을 손해를 보지 않는 선에서 최대한 많이 채굴하려고 합니다. 채굴은 반드시 [그림 1, 2]과 같은 마름모 모양으로 단 한 번 할 수 있으며, 마름모 모양을 지키는 한 [그림 3]와 같이 이차원 영역을 벗어난 채굴도 가능하지만 이차원 영역 밖에 금은 존재하지 않습니다.

여기서 마름모 모양이란 특정 중심점을 기준으로 K번 이내로 상하좌우의 인접한 곳으로 이동하는 걸 반복했을 때 갈 수 있는 모든 영역이 색칠되어 있는 모양을 의미합니다. [그림 1]은 K가 1일때의 마름모 모양이고, [그림 2]는 K가 2일때 마름모 모양입니다. K가 0인 경우는 지점 한 곳에서만 채굴하는 것을 의미하며 이 역시 올바른 마름모 모양이라 할 수 있습니다. 올바르지 않은 마름모 모양을 이용해서는 채굴이 불가능합니다.

이때 채굴에 드는 비용은 마름모 안의 격자 개수만큼 들어가며, 이는 K∗K+(K+1)∗(K+1)로 계산될 수 있습니다. 금 한 개의 가격이 m일 때, 손해를 보지 않으면서 채굴할 수 있는 가장 많은 금의 개수를 출력하는 코드를 작성해보세요. 단 한 개의 격자 안에는 최대 한 개의 금만 존재합니다

입력 형식

첫 번째 줄에는 n과 m이 공백을 사이에 두고 주어지고,

두 번째 줄부터 (n+1)번째 줄까지는 각 행에 금이 있는 경우 1, 없는 경우 0으로 입력이 공백을 사이에 두고 주어집니다.

  • 1≤n≤20
  • 1≤m≤10

출력 형식

손해를 보지 않으면서 채굴할 수 있는 가장 많은 금의 개수를 출력해줍니다.

입출력 예제

예제 1

입력:

5 5
0 0 0 0 0
0 1 0 0 0
0 0 1 0 1
0 0 0 0 0
0 0 0 1 0
 

출력:

3
 

예제 2

입력:

3 2
0 1 0
1 0 1
0 0 0
 

출력:

3
 

예제 설명

예제 1에서는 [그림 1] 오른쪽 그림과 같이 (3,3) 위치에 K가 2인 마름모를 그렸을 때, 채굴에 드는 비용은 13이고 금 3개의 가격은 15 이므로 손해를 보지 않으면서 3개의 금을 얻을 수 있게 됩니다.

손해를 보지 않으면서 금 4개를 얻을 수 있는 방법은 존재하지 않습니다.


n , goldPrice = list(map(int,input().split()))


goldCave = [
    list(map(int,input().split()))
    for _ in range(n)
]

bestHigh = 0

def howManyGold( x , y , k ):
    totalGold = 0
    for i in range(n):
        for j in range(n):
            if abs(x - i) + abs(y - j) <= k:
                totalGold += goldCave[i][j]
    return totalGold

def digPrice (k):
    return k * k + ( k + 1 ) * ( k + 1 )

for i in range(n):
    for j in range(n):
        for k in range(n):
            if (howManyGold( i , j , k ) * goldPrice) >= digPrice(k) and bestHigh < howManyGold( i , j , k ):
                bestHigh = howManyGold( i , j , k )
                

print(bestHigh)

감사합니다

'Knowledge > Python' 카테고리의 다른 글

[백준] 2178번: 미로 탐색 Python 코드, BFS  (6) 2022.10.14
[코드트리] 정수 사각형 최솟값의 최대 , python 문제 풀이  (6) 2022.07.26
[코드트리] 두 방향 탈출 가능 여부 판별하기 , python 문제 풀이  (4) 2022.07.25
[코드트리] 가운데에서 시작하여 빙빙 돌기 ,python 문제 풀이  (4) 2022.07.17
[코드트리] 거울에 레이저 쏘기 2 ,python 문제 풀이  (2) 2022.07.17
  1. 문제
'Knowledge/Python' 카테고리의 다른 글
  • [코드트리] 정수 사각형 최솟값의 최대 , python 문제 풀이
  • [코드트리] 두 방향 탈출 가능 여부 판별하기 , python 문제 풀이
  • [코드트리] 가운데에서 시작하여 빙빙 돌기 ,python 문제 풀이
  • [코드트리] 거울에 레이저 쏘기 2 ,python 문제 풀이
발달중인 망고
발달중인 망고
Kangwon uni. Department of Computer Engineering
발달중인 망고
망고의 개발일기
발달중인 망고
전체
오늘
어제
  • ROOT (85)
    • 🥭Mango Odyssey (3)
    • Backend (1)
      • 🌿Spring (16)
    • Frontend (3)
      • React (1)
      • Thymeleaf (1)
      • Flutter (1)
    • DevOps (7)
      • AWS (5)
      • Docker (2)
    • Git (5)
    • Knowledge (18)
      • Java (12)
      • Python (6)
    • Activities (10)
      • 우아한 테크 프리코스 (7)
      • itwill (1)
      • 프리온보딩 백엔드 챌린지 12월 (0)
      • 스위프(SWYP) 3기 (1)
      • 팀 맥플러리 (1)
    • SQL (5)
    • IoT (4)
      • 아두이노 (4)
    • AI (1)
    • OS (1)
    • 일상 (8)
      • 일기 (6)
      • 독서 (0)
      • 잡생각 (1)
    • 언젠가 분류될 카테고리 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우테코
  • Model
  • 코드
  • AWS
  • JPA
  • 소스코드
  • 스프링부트
  • 회고록
  • 문제풀이
  • 코드소스
  • 백엔드
  • 알고리즘
  • springboot
  • Java
  • EC2
  • baekjoon
  • 백준
  • GIT
  • 깃허브
  • spring boot
  • Spring
  • DB
  • 자바
  • 코드트리
  • SQL
  • 파이썬
  • MVC
  • 코딩테스트
  • 아두이노
  • python

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
발달중인 망고
[코드트리] 금 채굴하기 , python 문제 풀이
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.