package test;
import java.util.Scanner;
public class test {
static int x[] = new int[1000000];
static final int MUL = 1000000;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = Integer.parseInt(scan.nextLine());
int l = MUL / m;
int scope[] = new int[m];
for (int i = 0; i < m; i++) {
scope[i] = (i + 1) * l;
}
String arr[] = scan.nextLine().split(" ");
for (int i = 0; i < arr.length; i++) {
x[i] = (int) Math.ceil(MUL * Double.parseDouble(arr[i]));
}
int count[] = new int[m];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < m; j++) {
if (x[i] < scope[j]) {
count[j]++;
break;
}
}
}
for (int i = 0; i < m; i++) {
System.out.print(count[i] + " ");
}
}
}
여기서 3 0.333333을 입력할 경우 1 0 0 이 출력되는게 맞습니다.
0<= 구간1 < 0.3333333333333
0.3333333333333<= 구간2 < 0.6666666... 이기 때문에 1 0 0 이 출력 되는게 정상입니다.
하지만 위 코드를 백준에 제출시 정답이라고 나오는데 3 0.333333입력시 0 1 0 이 출력됨에도 불구하고 정답으로 처리됩니다. 이거 뭔가요?
한 15번정도 틀려서 왜 그런가 했는데 데이터에 오류가 있네요..
simsimjae 6년 전
아래는 질문게시판에 올라온 정답 자바 코드입니다. 실제로 돌려보시면 정답이라고 나옵니다.