문제
로직
과목의 개수 입력 받기
배열 선언, 크기 설정
형변환할 변수 선언(정수로 배열 값 입력해야 해서)
최댓값 변수 선언 및 초기화
평균값 변수 초기화
반복문1
- 점수 값 입력 받기
- 최대 값 판별 및 변수에 저장
반복문2
- 정수로 받은 점수 값을 실수로 형변환하여 저장
- 총합 계산
평균 출력
My Code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] score = new int[num];
double scoreDouble;
double scoreMax = score[0];
double resultSum = (float) 0;
for (int i = 0; i<score.length; i++) {
score[i] = sc.nextInt();
scoreMax = (scoreMax < score[i]) ? score[i] : scoreMax;
}
for (int j = 0; j < score.length; j++) {
scoreDouble = (double) score[j];
scoreDouble /= scoreMax;
resultSum += scoreDouble*100;
}
System.out.println(resultSum/score.length);
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] score = new int[num];
double scoreDouble;
double scoreMax = score[0];
double resultSum = (float) 0;
for (int i = 0; i<score.length; i++) {
score[i] = sc.nextInt();
scoreMax = (scoreMax < score[i]) ? score[i] : scoreMax;
}
for (int j = 0; j < score.length; j++) {
scoreDouble = (double) score[j];
scoreDouble /= scoreMax;
resultSum += scoreDouble*100;
}
System.out.println(resultSum/score.length);
}
}
문제의 핵심 & 알게된 점
정수로 입력받아야한다는 조건이 있는데 평균은 실수로 나와야 한다.
그래서 그걸 계산하는데 부가적인 변수(scoreDouble)도 생성했지만 비효율적이라고 생각했다.
나는 한 개씩 점수를 계산하고 총합을 구할 생각만 했는데
총합을 한번에 계산하니 형변환을 굳이 안해도 되서 더욱 간단히 코드를 구현할 수 있었다.
강의 Code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int temp;
long max = 0;
long sum = 0;
for (int i = 0; i<num; i++) {
temp = sc.nextInt();
max = (max < temp) ? temp : max;
sum += max;
}
System.out.println(100.0*sum/max/num);
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int temp;
long max = 0;
long sum = 0;
for (int i = 0; i<num; i++) {
temp = sc.nextInt();
max = (max < temp) ? temp : max;
sum += max;
}
System.out.println(100.0*sum/max/num);
}
}
참고 강의_인프런의 Do it! 알고리즘 코딩테스트 with JAVA
'Java' 카테고리의 다른 글
[백준] 12891번 DNA 비밀번호 - 슬라이딩 윈도우 / switch / 함수 (0) | 2023.08.12 |
---|---|
[백준] 1940번 주몽 - 투포인터 / 시간 제한 맞추기 / 배열 정렬 / BufferReader (0) | 2023.08.12 |
[백준] 2018번 수들의 합5 - 투포인터 / 배열 / if문 / while문 (0) | 2023.08.11 |
[백준] 11659번 구간 합 구하기4 - 구간 합 / 배열 / BufferedReader / StringToken (0) | 2023.08.09 |
[백준] 11720번 숫자의 합 - 배열 활용 / 형변환 / 아스키코드 / readLine() (0) | 2023.08.09 |