직접 리스트를 구현하는 경우는 드물다.
자바에선 ArrayList나 LinkedList등 이미 구현되어있는 리스트 사용하는 경우가 다수
import java.util.*;
class Main{
public static void main(String args[]){
Scanner scanner= new Scanner(System.in);
int n = scanner.nextInt();
String input = scanner.next();
char[] inputToCharArray = input.toCharArray();
int sum=0;
for(int i=0; i<n ;i++){
sum += inputToCharArray[i]-'0';
}
System.out.println(sum);
}
}
얻어갈 점:
문제보고 로직이 바로 떠오른다고 바로 코드 작성하지 말고, 문제 꼼꼼히 읽어보고 빠트린 점은 없는지 등 체크하기!(n범위가 100까지이므로, int형,long형과 같은 숫자형으로 담을 수 없었다!)
문자열로 받고 그걸 문자형 배열(toCharArray)로 바꿔서 풀어볼까?
문자열을 받을땐 scanner.next() / 숫자를 받을땐 scanner.nextInt()
아스키 코드: 문자형을 숫자형으로 변경하려면 아스키코드를 이해해야한다. 아스키코드에서 같은 의미의 문자와 숫자의 코드 값 차이는 48
ex) 문자 '1'은 아스키 코드 값이 49이므로 문자 '1'을 숫자 1로 변환하려면 '1'-48 or '1'-'0'으로 연산해야함
import java.util.*;
class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double[] score = new double[n];
double maxScore = 0.0;
for(int i=0; i<n; i++){
score[i] = sc.nextDouble();
if(maxScore<score[i]){
maxScore = score[i];
}
}
double sum = 0.0;
double average = 0.0;
for(int i=0; i<n ;i++){
score[i]= (score[i] / maxScore * 100);
sum += score[i];
}
average = sum/n;
System.out.print(average);
}
}
얻어갈 점: 값을 입력받고 최대값을 구하는 로직을 따로 둘 것이 아니라, 값을 입력받고 그때 입력받은 값과 최대값을 비교해서 한 번에 저장해놓는 것이 코드가 간결해진다.