📝 초기화 문제 1
👉 int 자료형 배열 5칸짜리를 선언 및 할당
👉 각 배열 인덱스 요소에 입력 받은 정수를 대입하고
👉 입력이 완료된 후 한번에 출력
예상 결과 화면)
입력 0 : 10
입력 1 : 5
입력 2 : 17
입력 3 : 30
입력 4 : 100
Scanner sc = new Scanner(System.in); int[] arr = new int[5]; for(int i = 0; i < arr.length; i++) { System.out.print("입력 "+ i + " : "); arr[i] = sc.nextInt(); } System.out.println(Arrays.toString(arr)); }
풀이
1. 조건에 맞게 int[] 자료형 배열선언
2. for문을 통해 인덱스값이 0~4까지 반복하는 반복문 생성
3. for문 안에서 인덱스 순서에 맞게 값을 입력받고➡System.out.print
입력받은 정수를 배열 요소에 대입 ➡ arr[i] = sc.nextInt();
4. 해당 배열에 저장된 모든 요소가 순서대로 출력하기 위해 Arrays.toString 사용
📝 초기화 문제 2
👉 5명의 키(cm)를 입력받아 배열의 각 인덱스에 초기화 하고
👉 5명의 키, 평균 키 출력
👉 출력할때 '1번 키 입력: '부터 시작
Scanner sc = new Scanner(System.in); double[] arr = new double[5]; for(int i = 0; i < arr.length; i++) { System.out.print((i+1) + " 키 입력 : "); arr[i] = sc.nextDouble(); } //평균 double sum = 0; for(int i = 0; i < arr.length; i++) { sum += arr[i]; } System.out.println("평균 : " + sum /arr.length); }
풀이
1. 키는 실수 형태로 표현하는게 많아서 실수형 double 사용
2. for문에서 위에서 입력 받은 값을 arr[i]에 저장
3. 평균을 내기 위해 합계용 변수 sum 선언 후 초기화 ( double의 자료형이 int보다 크기때문에 0으로 써도된다.)
4. 두번째 for문에서 첫번째 for문에서 각 인덱스에 저장된 값들을 sum에 누적한다.
5. 두 번째 for문도 끝난 후 합계/ 합계에 참여한 수의 개수로 나눈다.
-> sum과 나누기 할 때 5가 아닌 arr.length로 작성
✔ 풀이 5번에서 arr.length를 사용한 이유
: 유지보수성 향상을 위해 직접 값을 적지 않고 변수명 또는 값을 얻어올 수 있는 코드 작성
📝 초기화 문제 3
👉 추가 조건: 문제 2와 같은 동작(입력, 평균) 하지만 입력받은 순서와 상관없이 역순으로 출력
예상 결과 화면)
문제 2와 같지만 평균 출력 전에 '입력 받은 키 : [135.0,152.0,185.0,180.2,160.5] ' 출력
Scanner sc = new Scanner(System.in); double[] arr = new double[5]; for(int i = 0; i < arr.length; i++) { System.out.print((i+1) + " 키 입력 : "); arr[i] = sc.nextDouble(); } double sum = 0; System.out.print("입력 받은 키 : ["); for(int i = arr.length-1; i>= 0; i--) { System.out.print(arr[i]); sum += arr[i]; if(i > 0) { // 반복문이 마지막이 아닐경우 4,3,2,1까지는 ,추가 0일때는 ,추가되지 않게 System.out.print(","); } } System.out.println("]"); System.out.println("평균 키 : " + ( sum/ arr.length)); }
풀이
1. 입력받은 후에 '입력 받은 키 : [" 출력
2. [ ] 안에 들어가게 for문을 이용해 arr[i]배열의 값들을 내림차순으로 정리
3. 출력용 for문은 i값이 4,3,2,1,0이 되어야 하기 때문에 arr.length-1
4. 역순대로 arr[i]의 값들을 print하고 그 밑에 평균을 위한 sum += arr[i]
5. 값을 정리할때 사이에 ,를 넣어야하니깐 if로 i(index)의 값이 1까지는 ,추가한다.
6. 대괄호 출력해 서 입력 받은 키 마무리
7. 평균 키 계산
📝 응용) 초기화 문제 4
👉 5명의 키를 입력받아 배열에 저장한 후
👉 최장신, 최단신을 찾아 출력
최대/최소 찾기
최대/최소 찾기 방법 1
(max, min변수를 값을 입력 받기 전에 준비)
- 최대값을 저장하기 위한 변수 : 가장 작은 값으로 초기화
- 최소값을 저장하기 위한 변수 : 가장 큰 값으로 초기화
double max = 0; //최대값을 저장하기 위한 변수
double min = Double.MAX_VALUE; // 최솟값을 저장하기 위한 변수
Double.MAX_VALUE : 더블의 최대값
Scanner sc = new Scanner(System.in); double[] arr = new double[5]; //입력 for(int i = 0; i < arr.length; i++) { System.out.print((i+1) + "번 키 입력 : "); arr[i] = sc.nextDouble(); } double max = 0; //최대값 double min = Double.MAX_VALUE; //최소값 //비교 for문 for(int i =0; i<arr.length; i++){ //최대값 찾기 if( arr[i] > max) { //현재 접근한 배열 인덱스의 값이 // max 변수에 저장된 값보다 큰 경우 max = arr[i]; } if( arr[i] < min) { min = arr[i]; } } //최장신 찾기 System.out.println("최장신 : " + max); //최단신 찾기 System.out.println("최단신 : " + min);
풀이
1. max, min의 변수 선언 후 초기화
2. 비교 for문을 통해 인덱스 0~4까지가는 반복문 생성
3. if문으로 배열 arr에 각 인덱스에 있는 값들과 max의 값 비교
➡ 현재 접근한 배열 인덱스의 값이 max 변수에 저장된 값보다 큰 경우 그 값이 max에 저장된다
4. 최소값은 min 변수에 제일 작은 값이 들어가야 하기때문에 arr[i]의 값이 min보다 작으면 min에 저장된다.
➡ 현재 접근한 배열 인덱스의 값이 min 변수에 저장된 값보다 작은 경우 ( min보다 작으면 인덱스 값이 최소값이 된다)
➡ 최대값과 부등호 방향만 반대
최대/최소 찾기 방법 2
max, min변수를 값을 입력받은 후 준비
Scanner sc = new Scanner(System.in); double[] arr = new double[5]; //입력 for(int i = 0; i < arr.length; i++) { System.out.print((i+1) + "번 키 입력 : "); arr[i] = sc.nextDouble(); } double max = arr[0]; double min = arr[0]; //비교 for문 for(int i =0; i<arr.length; i++){ //최대값 찾기 if( arr[i] > max) { //현재 접근한 배열 인덱스의 값이 // max 변수에 저장된 값보다 큰 경우 max = arr[i]; } if( arr[i] < min) { min = arr[i]; } } //최장신 찾기 System.out.println("최장신 : " + max); //최단신 찾기 System.out.println("최단신 : " + min);
풀이
1. 최대/최소 찾기 방법 1과 동일하지만 최대, 최소를 저장하기 위한 변수에 배열의 첫 번째 요소 값을 대입한다.
방법1 또한 시작은 0번 인덱스에서부터 하기때문에 처음부터 초기화를 해준다.
반응형
'Backend > 문제 풀이' 카테고리의 다른 글
[Java] Polymorphism(다형성)_예제 (0) | 2021.09.11 |
---|---|
[Java] Inheritance(상속) 예제 (0) | 2021.09.08 |
[Java|연습] 2차원 Array(배열)_기초 문제 행,열 합 (0) | 2021.09.02 |
[Java|연습] Array(배열)_lotto(Math.random()) (0) | 2021.09.02 |
[Java] 소수 판별 문제_for, if, flag (0) | 2021.08.31 |