배열
배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조
- 배열의 값은 인덱스를 통해 참조할 수 있다. ex) A[3], B[0]
- 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다.
- 배열의 크기는 선언할 때 지정되며, 크기를 늘리거나 줄일 수 없다.
리스트
값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조
- 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야한다. 즉, 값에 접근하는 속도가 느리다.
- 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다.
- 선언할 때 크기를 별도로 지정하지 않아도 된다. 크기가 변하는 데이터를 다룰 때 적절하다.
- 포인터를 저장할 공간이 필요하여 배열보다 구조가 복잡하다.
11720 : 숫자의 합 구하기
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
- 100자리의 숫자는 int나 long형에 담을 수 없다. -> 문자형으로 입력받기
- 아스키코드에서 문자 '1'과 숫자 1은 48만큼 차이난다. 예) '1' - 48 = 1
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
실행 코드
import java.util.Scanner;
public class P11720 {
// 11720 : 숫자의 합 구하기
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
// N값 입력받기
int N = sc.nextInt();
// N값 길이만큼의 String형 변수 저장
String Snum = sc.next();
// String 변수를 char[] 배열에 저장
char[] cNum = Snum.toCharArray();
// 배열의 각 값을 더한다.
int sum = 0; // 숫자의 합을 저장할 변수
for(int i = 0; i < N ; i++){
sum += cNum[i] - '0'; // '1' = 49, '0' = 48
}
System.out.print(sum);
}
}
1546 : 평균 구하기
문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
출력
첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.
실행 코드
ex) 70, 60, 80, 90일 경우
(70/90*100 + 60/90*100 + 80/90*100 + 90/90*100) / 4
= (70+60+80+90) * 100 / 90 / 4
= (각 점수 합) * 100 / 최대점수 / N
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] A = new int[N];
for(int i = 0; i<N; i++){
A[i] = sc.nextInt();
}
long sum = 0;
long max = 0;
// 최댓값 찾기
for(int i=0; i<N; i++){
if(A[i]>max) max = A[i];
sum += A[i];
}
//(각 점수 합) * 100 / 최대점수 / N
System.out.println(sum * 100.0 / max / N);
}
}
'[ STUDY ] > CodingTest' 카테고리의 다른 글
[ 정렬 ] 버블 정렬, 선택 정렬 (백준 2750, 1427) (1) | 2024.11.06 |
---|---|
[ 자료구조 ] 스택과 큐(백준 1874, 2164, 11286) (0) | 2024.11.01 |
[ 자료구조 ] 슬라이딩 윈도우(백준 12891) (1) | 2024.10.31 |
[ 자료구조 ] 투 포인터(백준 2018, 1940) (1) | 2024.10.29 |
[ 자료구조 ] 구간 합(백준 11659) (3) | 2024.10.29 |