일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바 스프링
- php 프로그래밍 입문
- 페이코 추천인
- 백준
- 스프링
- Flutter
- 페이코 친구코드
- 플러터
- php 프로그래밍 입문 3판
- 한정 분기
- 플러터 개발환경 설정
- php 프로그래밍
- php 프로그래밍 입문 연습문제
- 페이코 추천인코드
- 페이코 초대코드
- php 프로그래밍 입문 예제
- spring
- php 프로그래밍 입문 솔루션
- 파이썬
- php
- 자바
- 최단 경로
- Java
- C언어
- programmers
- JAVA SPRING
- C
- 배열
- php 프로그래밍 입문 문제풀이
- SWEA
Archives
- Today
- Total
11-07 11:40
ImJay
[Softeer/Java] 6294. 평균 구하기 본문
반응형
[Softeer/Java] 6294. 평균 구하기
문제 해석
이 문제에서는 학생들의 점수 목록이 주어지고, 주어진 쿼리에 따라 특정 범위의 학생들 점수의 평균을 계산해야 한다. 각 쿼리는 시작 인덱스 𝑠와 종료 인덱스 𝑒를 포함하며, 이 범위에 포함된 학생들의 점수 평균을 출력한다. 문제에서 제공된 코드는 시작 인덱스를 1부터 계산하므로 입력 받을 때 인덱스 조정이 필요하다.
풀이 과정
제공된 코드는 입력 받은 점수 배열과 쿼리를 처리하여 평균을 계산하는 로직을 포함한다. 각 쿼리는 주어진 범위의 점수들을 합산하고, 범위의 길이로 나누어 평균을 구한다. 이 평균은 소수점 둘째 자리까지 출력해야 하므로 String.format을 사용하여 포맷팅한다.
코드
package edu.ssafy.im.SOF.No6294;
import java.io.*;
import java.util.*;
public class Main {
private static int N, K;
private static int[] score;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken()); // 학생 수
K = Integer.parseInt(st.nextToken()); // 쿼리 수
score = new int[N];
st = new StringTokenizer(br.readLine()); // 점수 배열 입력
for (int i=0; i<N; i++) {
score[i] = Integer.parseInt(st.nextToken());
}
// 쿼리 처리
for (int i=0; i<K; i++) {
st = new StringTokenizer(br.readLine());
sb.append(sol(Integer.parseInt(st.nextToken()) - 1, Integer.parseInt(st.nextToken()))).append("\n");
}
bw.write(sb.toString()); // 결과 출력
bw.flush();
bw.close();
}
// 평균 계산 함수
private static String sol(int s, int e) {
double sum = 0;
for(int i = s; i < e; i++) {
sum += score[i];
}
return String.format("%.2f", sum/(e-s)); // 소수점 둘째 자리까지 평균 출력
}
}
시간 복잡도 분석
이 알고리즘은 각 쿼리마다 점수 배열의 일부를 순회하여 합을 계산하기 때문에, 시간 복잡도는 각 쿼리의 범위 𝑒−𝑠에 비례한다. 최악의 경우 𝑂(𝑁×𝐾)의 시간 복잡도를 가질 수 있다.
느낀점
이 문제를 통해 입력과 출력 처리, 문자열 파싱, 그리고 범위에 따른 평균 계산 방법을 복습할 수 있었다. 실제 코딩 테스트 환경에서는 입력과 출력 처리에 유의해야 하며, 정확하고 효율적인 코드 작성이 중요하다는 것을 다시 한번 인식하게 되었다.
반응형
'알고리즘 > 소프티어' 카테고리의 다른 글
[Softeer/Java] 6248. 출퇴근길 (9) | 2024.05.01 |
---|---|
[Softeer/Java] 6293. 징검다리 (1) | 2024.05.01 |
Comments