[자바] 백준 4344번 문제

    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

     

    댓글