728x90
문제

제약조건

메모리 제약

입/출력

문제 분석
단순 연산 문제!
1. 값 입력
2. 구간 내에 범위 계산
3. 반올림 이후 두자리 포멧으로 출력
풀이 1
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] input = bf.readLine().split(" ");
// int people = Integer.parseInt(input[0]);
int gugan = Integer.parseInt(input[1]);
String[] records = bf.readLine().split(" ");
for (int i = 0; i < gugan; i++) {
String[] findGugan = bf.readLine().split(" ");
int start = Integer.parseInt(findGugan[0])-1;
int end = Integer.parseInt(findGugan[1])-1;
int sum = 0;
for (int j = start; j <= end; j++) {
sum += Integer.parseInt(records[j]);
}
double avg = (double) sum/(end-start+1);
int avgInt = (int) (avg*1000);
// 두번째자리 반올림
System.out.printf("%.2f\r\n", avgInt/1000.0);
}
}
}
실패
시간초과.....?
시간을 찍어보니까 3가지 구간을 푸는데 대략 1.9초가 걸렸다...
아마 이중 for문에서 형변환이 큰 부담을 차지하는 것으로 예상 후 구간 값을 double로 변경 후 제출
풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] input = bf.readLine().split(" ");
int gugan = Integer.parseInt(input[1]);
double[] records = Arrays.stream(bf.readLine().split(" ")).mapToDouble(Double::new).toArray();
for (int i = 0; i < gugan; i++) {
String[] findGugan = bf.readLine().split(" ");
int start = Integer.parseInt(findGugan[0])-1;
int end = Integer.parseInt(findGugan[1])-1;
double sum = 0;
for (int j = start; j <= end; j++) {
sum += records[j];
}
double avg = sum/(end-start+1);
int avgInt = (int) (avg*1000);
// 두번째자리 반올림
System.out.printf("%.2f\r\n", avgInt/1000.0);
}
}
}
성공

링크
https://softeer.ai/practice/6294
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
728x90
반응형
LIST
'Etc > 알고리즘' 카테고리의 다른 글
| [softeer] 6291 (0) | 2024.08.16 |
|---|---|
| [softeer] 9497 (0) | 2024.08.02 |
| [softeer] 6270 (0) | 2024.08.02 |
| [softeer] 6280 (1) | 2024.07.29 |
| [softeer] 9498 (0) | 2024.07.29 |