bookstore 오답이 어디서 났는지 몰라서 질문 드립니다. 각 서점별 배열을 새롭게 할당하고 책의 가격과 포인트를 적립받을 때 가장 작은 포인트를 가진 책을 마지막에 현재 포인트와 비교하여 계산하는 전략으로 풀었습니다. 도무지 어떤 부분에서 오답처리가 됐는지 모르겠습니다.
아래는 테스트 결과와 해당소스입니다. 답변부탁드릴게요 ㅠㅠ
1
4 1
50000 2000
static Scanner stdin = new Scanner(System.in);
static int N;
static int M;
static int[] res;
public static void main(String[] args) {
// TODO Auto-generated method stub
int numOfTest = stdin.nextInt();
res = new int[numOfTest];
int[][] bookList = null;
int[][][] depBooklist = null;
int[] minPoint = null;
int[] minPoint_book = null;
int count = 0;
int count_point = 0;
for (int t = 0; t < numOfTest; t++) {
N = stdin.nextInt();
M = stdin.nextInt();
bookList = new int[N][2 * M];
depBooklist = new int[M][N][2];
minPoint = new int[M];
minPoint_book = new int[M];
for (int i = 0; i < M; i++) {
minPoint[i] = 10001;
}
for (int i = 0; i < N; i++) {
count = 0;
count_point = 0;
for (int j = 0; j < 2 * M; j++) {
bookList[i][j] = stdin.nextInt();
if (j % 2 == 0) {
depBooklist[count][i][0] = bookList[i][j];
count++;
} else {
depBooklist[count_point][i][1] = bookList[i][j];
if (minPoint[count_point] > bookList[i][j]) {
minPoint[count_point] = bookList[i][j];
minPoint_book[count_point] = bookList[i][j - 1];
}
count_point++;
}
}// 삼중 for 끝
}// 이중 for 끝
res[t]=check(depBooklist, minPoint, minPoint_book);
}// for 끝
for (int i : res) { System.out.println(i); }
}
// M N 2 minpoint minPoint_book은 M만큼 생성됨
public static int check(int[][][] depBooklist, int[] minPoint, int[] minPoint_book) {
int size = minPoint.length;
int result;
int[] bookCost = new int[size];
int[] currPoint = new int[size];
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if(minPoint[i] != depBooklist[i][j][1]){
if(bookCost[i] == 0)
{
bookCost[i]=depBooklist[i][j][0]+bookCost[i];
currPoint[i]=depBooklist[i][j][1]+currPoint[i];
}
else if(depBooklist[i][j][0] >= currPoint[i]) {
bookCost[i]=depBooklist[i][j][0]+bookCost[i]-currPoint[i];
currPoint[i]=depBooklist[i][j][1];
}
else if(depBooklist[i][j][0] < currPoint[i]){
currPoint[i]=currPoint[i]-depBooklist[i][j][0]+depBooklist[i][j][1];
}
}
}// 이중 for 끝
}// for 끝
for (int i = 0; i < M; i++) {
if(currPoint[i]<minPoint_book[i])
bookCost[i]=minPoint_book[i]+bookCost[i]-currPoint[i];
}
Arrays.sort(bookCost);
result=bookCost[0];
return result;
}
}
9년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
tajano5
bookstore 오답이 어디서 났는지 몰라서 질문 드립니다. 각 서점별 배열을 새롭게 할당하고 책의 가격과 포인트를 적립받을 때 가장 작은 포인트를 가진 책을 마지막에 현재 포인트와 비교하여 계산하는 전략으로 풀었습니다. 도무지 어떤 부분에서 오답처리가 됐는지 모르겠습니다.
아래는 테스트 결과와 해당소스입니다. 답변부탁드릴게요 ㅠㅠ
1
4 1
50000 2000
2000 1999
4000 2001
5000 2002
54997
1
1 5
1000 0 2000 1999 3000 2500 4000 2000 5000 200
1000
2
2 1
3000 2900
1000 900
1 2
3000 2900 1000 900
3000
1000
1
4 1
8000 7900
3000 2000
2000 1000
1000 500
8000
1
3 1
5 3
4 2
1 0
6
import java.util.Arrays;
import java.util.Scanner;
public class BookStore1 {
}
9년 전