Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 Array Q08_등수구하기 본문
728x90
설명
N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요.
같은 점수가 입력될 경우 높은 등수로 동일 처리한다.
즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다.
입력
첫 줄에 N(3<=N<=100)이 입력되고, 두 번째 줄에 국어점수를 의미하는 N개의 정수가 입력된다.
출력
입력된 순서대로 등수를 출력한다.
예시 입력1
예시 출력5
87 89 92 100 764 3 2 1 5
코드
내가 입력한 코드
import java.util.Scanner; public class Q08 { public int[] solution(int n, int[] arr) { int[] answer = new int[n]; for (int i = 0; i < n; i++) { int tmp = arr[i]; int cnt = 1; for (int j = 0; j < answer.length; j++) { if(tmp < arr[j]) { cnt++; } } answer[i] = cnt; } return answer; } public static void main(String[] args) { Q08 T = new Q08(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } for(int x:T.solution(n, arr)) { System.out.print(x+" "); } } }
해설 코드import java.util.*; class Main { public int[] solution(int n, int[] arr){ int[] answer = new int[n]; for(int i=0; i<n; i++){ int cnt=1; for(int j=0; j<arr.length; j++){ if(arr[j]>arr[i]) cnt++; } answer[i]=cnt; } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i<n; i++){ arr[i]=kb.nextInt(); } for(int x :T.solution(n, arr)) System.out.print(x+" "); } }
풀이 및 정리
점수를 입력받은 배열과 추가적으로 등수를 저장할 배열 추가적으로 생성해줘야한다.
등수를 지정할 변수 cnt를 값 1로 생성해준다.
반복문에서 점수가 저장된 arr 배열을 인덱스 0부터 지정해서 arr배열에 모든 인덱스의 값과 비교시켜준다.
예를 들어 arr[] = {89,85,85,81,80}의 점수의 배열을 입력 받았다면for(int i=0; i<n; i++){ int cnt=1; for(int j=0; j<arr.length; j++){ if(arr[j]>arr[i]) cnt++; } answer[i]=cnt; }
i=0일 때
arr[0]=89의 값을 89,85,85,81,80과 비교하고 89보다 큰값이 있을 때 cnt값을 증가
89보다 큰값이 없으므로 cnt = 1 이므로 answer[0] = 1이 된다.
i=1일 때
arr[1]=85의 값을 89,85,85,81,80과 비교하고 85보다 큰값이 있을 때 cnt값을 증가
85보다 큰값이 1개이므로 cnt = 2 이므로 answer[1] = 2
i=2일 때
arr[2]=85의 값을 89,85,85,81,80과 비교하고 85보다 큰값이 있을 때 cnt값을 증가
85보다 큰값이 1개이므로 cnt = 2 이므로 answer[1] = 2
i=3일 때
arr[3]=81의 값을 89,85,85,81,80과 비교하고 81보다 큰값이 있을 때 cnt값을 증가
81보다 큰값이 3개이므로 cnt = 4 이므로 answer[1] = 4
i=4일 때
arr[4]=80의 값을 89,85,85,81,80과 비교하고 80보다 큰값이 있을 때 cnt값을 증가
80보다 큰값이 4개이므로 cnt = 5 이므로 answer[1] = 5
=> answer[] = {1,2,2,4,5}
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 Array Q10_봉우리 (0) | 2022.02.19 |
---|---|
자바 알고리즘 문제 풀이 Array Q09_격자판 최대합 (0) | 2022.02.15 |
자바 알고리즘 문제 풀이 Array Q07_점수계산 (0) | 2022.02.13 |
자바 알고리즘 문제 풀이 Array Q06_뒤집은 소수 (0) | 2022.02.13 |
자바 알고리즘 문제 풀이 Array Q05_소수(에라토스테네스 체) (0) | 2022.02.12 |
Comments