[SWEA] 2115. [シミュレーションソフトウェア能力テスト]ハチミツ採取
13073 ワード
📚 質問する
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu&categoryId=AV5V4A46AdIDFAWu&categoryType=CODE&problemTitle=%EB%B2%8C%EA%BF%80%EC%B1%84%EC%B7%A8&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1
📖 に答える
横方向に連続して選択することもでき、提出時に横方向が均一になると失敗します.各行で最大値を抽出すると、答えが得られます.
まず,同じ線上から抽出しても,可能な限りコードを記述した.
まず、現在のインデックス基準mの一番左側を占め、mバーに最大コストをリストします.
画面から見る.
四角形の値の中で、最大の値を円に書きます.
このように記入した後、行ごとに最高価格を抽出します.
次に最値をソートし、最大値と2番目の大きな値を選択し、行ごとに最値のコードを抽出すると完了します.
行ごとに2つ抽出できることを確認するため、最上位の配列の最大値と同じ値の値は、同じ行で他の値が更新できるかどうかを確認します.
では、次のテストケースも正常に現れます.
1
4 2 10
1 1 1 1
3 3 3 3
1 1 1 1
1 1 1 1
結果:36
📒 コード#コード#
def recur(cur, total, money): # 구간에서 최대의 액수 구하기
global max_money
if total > c: # c보다 크면 리턴
return
if cur == m: # 구간을 다 확인했으면 최댓값 갱신
max_money = max(max_money, money)
return
# 조합으로 (선택하는 경우와, 선택하지 않는 경우)
recur(cur + 1, total, money)
recur(cur + 1, total + temp[cur], money + temp[cur] ** 2)
t = int(input())
for tc in range(1, 1 + t):
n, m, c = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(n)]
moneys = [[0] * n for _ in range(n)]
for i in range(n): # 각 구간별 최댓값을 맨 왼쪽 인덱스에 담아준다.
for j in range(n - m + 1):
cnt = 0
max_money = 0
temp = arr[i][j:j + m] # 구간을 배열에 담아 재귀함수로 최대 액수를 찾아준다.
recur(0, 0, 0)
moneys[i][j] = max_money
max_money = []
max_result = 0
for i in range(n): # 각 라인별로 최댓값을 뽑는다.
max_money.append((max(moneys[i]), i))
max_money.sort() # 최댓값을 정렬한다.
max_result = max_money[-1][0] + max_money[-2][0] # 정렬하여 큰 순서로 2개 뽑아 더해준다.
for i in range(1, n + 1):
if max_money[-i][0] != max_money[-1][0]: # 정렬한 배열 중 최댓값과 동일한 것이 여러 개 있으면 다 골라준다.
break
index = max_money[-i][1] # 확인할 라인
for j in range(n):
for k in range(j + m, n, m): # 최댓값이 나오면 바꿔준다.
max_result = max(max_result, moneys[index][j] + moneys[index][k])
print(f'#{tc} {max_result}')
🔍 結果
Reference
この問題について([SWEA] 2115. [シミュレーションソフトウェア能力テスト]ハチミツ採取), 我々は、より多くの情報をここで見つけました https://velog.io/@yunhlim/SWEA-2115.-모의-SW-역량테스트-벌꿀채취テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol