Seren dev's blog

https://softeer.ai/practice/6294

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

풀이

누적합 배열을 사용하여 풀이하였다.

코드

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        int[] scores = new int[n+1]; // 누적합 배열, scores[0] = 0
        st = new StringTokenizer(br.readLine());
        for (int i = 1; i <= n; i++) {
            scores[i] = scores[i-1] + Integer.parseInt(st.nextToken());
        }

        while (k-- > 0) {
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            int sum = scores[b] - scores[a-1];

            double diff = (double)sum / (b-a+1);
            
            // 소수 셋째자리에서 반올림
            if (diff * 1000 % 10 >= 5) {
                diff *= 100;
                diff++;
                diff = Math.floor(diff);
                diff /= 100;
            } else {
                diff *= 100;
                diff = Math.floor(diff);
                diff /= 100;
            }
            
            System.out.printf("%.2f\n", diff);
        }
    }
}

 

반올림하여 실수 출력하기
sb.append(String.format("%.2f", diff)).append("\n");​
위와 같이 "%.2f"를 쓰면 소수 셋째자리에서 반올림하여 소수점 이하 2자리를 출력한다.

 

참고

 

[C언어] 실수형 변수 출력 시 소수점 자릿수 조절 (반올림/올림/내림)

소수점 자릿수 조절 (반올림/올림/내림) #include int main() { float f1 = 20.0616f; printf("소수점 이하 6자리 출력 : %f\n", f1); printf("소수점 이하 0자리 출력 : %.f\n", f1); printf("소수점 이하 0자리 출력 : %.0f\n",

mong9data.tistory.com

 

 

 

728x90
profile

Seren dev's blog

@Seren dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!