Challenge
Careers
Class
Connect
로그인 후 문제풀이가 가능합니다.
테스트 케이스 2번 5번 질문드립니다.
import sys total, n = map(int, sys.stdin.readline().split()) bag=[] for _ in range(n): m, p = map(int, sys.stdin.readline().split()) bag.append([p,m]) result = 0 bag.sort(reverse = True) idx = 0 while total>0 and idx < n: if total - bag[idx][1] >=0: total -= bag[idx][1] result += bag[idx][0] * bag[0][1] else: result += total * bag[idx][0] total = 0 idx += 1 print(result) 테케 2번 5번에서 오답이라 뜨고, 시간도 3초가 넘어가는데 시간 관련된 문제는 금속의 무게와 무게당 가격 리스트를 받아오는 곳에서 리스트 컴프리헨션을 사용하지 않고 리스트에 추가한 후 정렬을 해서 그런 건가요?? 시간초...
왜 틀리는지 모르겠어요 ㅜ
import sys w, n = map(int,input().split()) arr_o = [] sum = 0 for i in range(n): arr_i = list(map(int,input().split())) arr_o.append(arr_i) arr_o.sort(key=lambda x:-x[1]) for m,p in arr_o: if w>= m: w = w-m sum = sum+(m*p) else: sum = sum+(w*p) print(sum)
파이썬인데 TC 5만 계속 오류가 나네요 ㅠㅠ
w, n = map(int, input().split()) lst_m = [] lst_p = [] price = [] for i in range(n): m, p = map(int, input().split()) lst_m.append(m) lst_p.append(p) max_m = lst_m[lst_p.index(max(lst_p))] while w > 0: if w > max_m: price.append(max_m * max(lst_p)) w = w - max_m lst_m.pop(lst_p.index(max(lst_p))) lst_p.remove(max(lst_p)) else: price.append(w * max(lst_p)) break print(sum(price))
js 테스트2,4,5 왜 실패할까요...ㅠㅠ
const input = require('fs').readFileSync(0).toString().trim().split("\n") let weight = parseInt(input[0].split(" ")[0]); input.splice(0, 1); //배낭무게와 귀금속 종류는 알았으니 제거 //귀금속이 비싼순으로 sort input.sort((a, b) => { const aprice = parseInt(a.split(" ")[1]); const bprice = parseInt(b.split(" ")[1]); return bprice-aprice; }) let result = 0; for(let i=0; i<input.length; i++) { const juWeight = parseInt(input[i].split(" ")[0]); const cost = parseInt(input[i].split(" ")[1]); if( juWeight <= weight) { result...
C 언어 솔루션
#include <stdio.h> #include <stdlib.h> int comp_func(const void **p1, const void **p2) { int* arr1 = *(int**)p1; int* arr2 = *(int**)p2; int price1 = arr1[1]; int price2 = arr2[1]; if(price1 < price2) return 1; else if(price1 > price2) return -1; else return 0; } int main(void) { int BagWeight = 0; int IronTypeNum = 0; scanf("%d %d", &BagWeight, &IronTypeNum); int** Arry = (int**)malloc(sizeof(int*)*IronTypeNum); for(int i=0; i<IronTyp...
2, 4, 5 케이스의 반례를 알 수 있을까요?
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); function solution() { const input = []; rl.on('line', line => { input.push(line.trim()); }).on('close', () => { const [bag, kind] = input.shift().split(' ').map(Number); const jewelWeight = []; const jewelValue = []; input.forEach((line, index) => { const [weight, value] = line.split(' ').map(Number); ...
금고털이 python 이유를 못 찾고 있습니다
계속 틀리는데, 잘 모르겠습니다 ㅜ import sys input = sys.stdin.readline case = dict() W, N = map(int, input().split(' ')) for _ in range(N): M, P = map(int, input().split(' ')) case[P] = M list1 = sorted(list(case.keys()), reverse=True) price = 0 for i in list1: if W > case[i]: price += case[i] * i W -= case[i] else: price += W * i break print(price)
금고털이 질문입니다.(해결)
아래 코드로 제출을 했는데 2, 4, 5 번 테스트는 오답이 나옵니다. 뭐가 문제일까요? ?int m[n], p[n]을 n 입력받기전에 선언해서 오류가 생긴거같네요 고치니까 돌아갑니다. #include int main(void) { unsigned int w, n, e_price=0; unsigned int m[n], p[n]; int temp_p,temp_m; int good[10001] = {0}; //[무게당 가격] good[무게당 가격] scanf("%d %d", &w, &n ); //입력받고 배열번호를 무게당 가격으로 생각하고 배열값에 금속의 무게를 더해줌, M_i,P_i가 10^4인 것을 이용한 방법 for(int i = 0; i0; i--){ if(good[i]>=w){ e_price = e_price + w*i; break; } else{ e_price = e_price ...
금고털이 문제
안녕하세요. 금고털이 문제 질문드립니다. 테스트 케이스를 풀면 2개가 시간초과되어 오답처리가 되는데요. 여러번 시도 해봐도 잘 안풀리더라고요. 인터넷 검색을 해보니 아래와 같은 해답이 공유되어있더라구요. import sys w, n = input().split() w, n = int(w), int(n) plist = [0 for i in range(n+1)] for i in range(n): mi, pi = input().split() mi, pi = int(mi), int(pi) plist[pi] += mi print(plist) num, total = len(plist)-1, 0 while w>0: if w < plist[num]: total += (w * num) w -= w else: total += num * plist[num] w -= plist[num] num -= 1 print(total) 근데 위 코드의 문제 점 중 하나가 금속의 kg당 가격이 금속의 개수보다 ...