Study/Java
[자바] 백준 4344번 문제
minulbora
2023. 12. 17. 19:30
https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.
www.acmicpc.net
문제는 위와 같다. 내가 풀어 본 방식은 다음과 같다.
package Practice;
import java.util.Scanner;
public class P4344 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int c = scn.nextInt(); // test case
int[][] testCase = new int[c][];
int total=0, upCnt=0;
double avg;
for(int i=0;i<c;i++) {
int n=scn.nextInt();
testCase[i]=new int[n]; //가변배열
for(int j=0;j<testCase[i].length;j++) {
testCase[i][j]=scn.nextInt();
total+=testCase[i][j];
}
//System.out.println(total+"/"+n); // test
avg=total/n;
//System.out.println(avg); //test
for(int j=0;j<testCase[i].length;j++) {
if(testCase[i][j]>avg) upCnt++;
}
//System.out.println(upCnt+"/"+n); //test
System.out.printf("%.3f%%\n",((double)upCnt/n)*100);
total=0;
avg=0;
upCnt=0;
}
}
}
익숙한 Scanner를 사용했고, for문을 한 번만 돌리기 위해 이차원배열을 사용했다.
0.000% 라는 형식을 만들기 위해 printf %.3f에 \n(줄바꿈)을 넣었고, 그래도 오류가 떠서 확인해 보니,
java.util.UnknownFormatConversionException: Conversion = ''
라고 떴다.
확인해보니 '%'를 넣을 때는 '%%'로 넣어야 한다고 한다. (아래 블로그 참고)
결과는 정답 처리되었다.
다만 내가 사용한 방법이 효율적인지는 모르겠다.
내일 다른 분들의 코드 확인 후 추가할 부분이 있다면 후술하도록 하겠다.
참고
[Java] String.format에서 %를 단순 문자로 사용할 때의 형식
String format 형식으로 SQL을 작성하는데 자꾸 아래와 같은 예외가 발생.java.util.UnknownFormatConversionException: Conversion = '''안되는 이유를 보니, format에서 %를 단순 문자로 사용할 때는 %%로 해
velog.io