알고리즘/코드트리

[코드트리/INTERMEDIATE LOW] Simulation 금 채굴하기 Python

감싹이 2023. 7. 31. 19:02

 

🔥 문제링크

https://www.codetree.ai/missions/2/problems/gold-mining?utm_source=clipboard&utm_medium=text 

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

🔥 문제

 

 

🔥 풀이

 k 크기만큼의 마름모 모양을 탐색하는 방법 : 기준점으로부터 떨어진 거리의 절대값이 k 보다 작은 구역을 모두 탐색

✅ 예시

 

 

🔥 코드

# 금 탐색 함수
def find_out_gold(x, y, k):
    total_gold = 0

    for i in range(n):
        for j in range(n):
            if abs(x-i) + abs(y-j) <= k: # 기준점으로부터 떨어진 거리의 절대값이 k값보다 작은 좌표 모두 탐색
                total_gold += goldMap[i][j]
    
    return total_gold



# 금 채굴 비용 함수
def gold_cost(k): 
    return k**2 + (k+1)**2



n, m = map(int, input().split())


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


max_gold = 0 # 이익을 볼 수 있는 최대 금 채굴 개수


for i in range(n):
    for j in range(n):
        for k in range(n): # 최대로 키울 수 있는 마름모 지름 : n
        	
            # 좌표 돌면서 채굴한 금의 가치가 금 채굴 비용보다 크고 이전에 탐색한 좌표보다 많은 금을 탐색한 경우
            if (find_out_gold(i, j, k)*m) - gold_cost(k) >= 0 and find_out_gold(i, j, k) > max_gold:
            	
                #최대 금 채굴량 갱신
                max_gold = find_out_gold(i, j, k)

print(max_gold)