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 = ''

라고 떴다. 

확인해보니 '%'를 넣을 때는 '%%'로 넣어야 한다고 한다. (아래 블로그 참고)

 

결과는 정답 처리되었다. 

다만 내가 사용한 방법이 효율적인지는 모르겠다. 

내일 다른 분들의 코드 확인 후 추가할 부분이 있다면 후술하도록 하겠다.  


참고

https://velog.io/@sechan100/Java-UnknownFormatConversionException-Conversion-%EC%9D%98-%ED%95%B4%EA%B2%B0

 

[Java] String.format에서 %를 단순 문자로 사용할 때의 형식

String format 형식으로 SQL을 작성하는데 자꾸 아래와 같은 예외가 발생.java.util.UnknownFormatConversionException: Conversion = '''안되는 이유를 보니, format에서 %를 단순 문자로 사용할 때는 %%로 해

velog.io