solution() {
float answer = 0
공백을 기준으로 나누어 String[] scoreStrArray에 각각 값을 넣기
String[] scoreStrArray을 int[] scoreIntArray에 그대로 담기
scoreIntArray의 최대값 구해 int변수 max에 담기
int sum 선언
for(scoreIntArray의 크기만큼 반복) {
if(각 인덱스의 값 != max) 각 인덱스의 값 = 각 인덱스의 값/max*100
sum += 각 인덱스의 값
}
answer = String.format("%.3f", (sum / N))
return answer
}
main() {
int형 변수 N을 입력받음
String형 변수 scores를 입력받음
solution()호출해 리턴값 출력
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static String solution(int N, String scores) {
String answer;
int sum = 0;
int[] scoreIntArray = new int[N];
String[] scoreStrArray =scores.split(" ");
for(int index=0; index < N; index ++) {
scoreIntArray[index] = Integer.parseInt(scoreStrArray[index]);
}
Arrays.sort(scoreIntArray);
int max = scoreIntArray[N-1];
for(int index=0; index < N; index ++) {
int score = scoreIntArray[index];
int newScore = score/max*100; // 논리 오류 발생!!!
scoreIntArray[index] = newScore;
sum += scoreIntArray[index];
}
float result = sum/N;
answer = String.format("%.3f", result);
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
String trashValue = scanner.nextLine();
String scores = scanner.nextLine();
scanner.close();
System.out.println(solution(N, scores));
}
}
결과가 예제와 다르게 나와서 디버깅해보니, newScore에 0이 들어가서, 최대값을 제외한 나머지값들이 0으로 바뀌는현상을 발견했다.
(float)score / (float)max * 100.0f
int newScore
-> float newScore
로 변경int sum
-> float sum
으로 변경import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static String solution(int N, String scores) {
String answer;
float sum = 0.0f;
int[] scoreIntArray = new int[N];
String[] scoreStrArray =scores.split(" ");
for(int index=0; index < N; index ++) {
scoreIntArray[index] = Integer.parseInt(scoreStrArray[index]);
}
Arrays.sort(scoreIntArray);
int max = scoreIntArray[N-1];
for(int index=0; index < N; index ++) {
int score = scoreIntArray[index];
float newScore = (float)score / (float)max * 100.0f;
sum += newScore;
}
float result = sum/N;
answer = String.format("%.3f", result);
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
String trashValue = scanner.nextLine();
String scores = scanner.nextLine();
scanner.close();
System.out.println(solution(N, scores));
}
}
public class Main {
public static float solution(int N, int[] scores) {
float answer;
int sum = 0;
Arrays.sort(scores);
int max = scores[N-1];
for(int index=0; index < N; index ++) {
sum += scores[index];
}
answer = sum * 100.0f / max / N;
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] scores = new int[N];
for(int i =0; i<N; i++) {
scores[i] = scanner.nextInt();
}
scanner.close();
System.out.println(solution(N, scores));
}
}