본문 바로가기
Computer Science/Algorithm

[Inflearn] 등수구하기

by 코딩맛 2022. 12. 11.

인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 문제를 풀고 문제 해설을 작성해보았습니다.

 

섹션2. Array(1,2차원 배열)의 8. 등수구하기 강의편 입니다.

 

설명

N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요.

같은 점수가 입력될 경우 높은 등수로 동일 처리한다.

즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다.

 

입력

첫 줄에 N(3<=N<=100)이 입력되고, 두 번째 줄에 국어점수를 의미하는 N개의 정수가 입력된다.

 

출력

입력된 순서대로 등수를 출력한다.

 

import java.util.Scanner;

public class 등수구하기 {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num  = sc.nextInt();
		int[] str = new int[num];
		for(int i = 0; i < num; i++) {
			str[i] = sc.nextInt();
		}
		
		for(int score : solution(num, str)) {
			System.out.print(score + " "); 
		}
	}
	
	public static int[] solution(int n, int[] s) {
		int[] scoreArr = new int[n];
		
		for(int i=0; i<n; i++) {
			int score = 1;
			for(int k=0; k<n; k++) {
				if(s[k] > s[i]) {
					score++;
				}
			}
			scoreArr[i] = score;
		}
		return scoreArr;
	}
}

 

>>해설

해당 문제는 이중반복문을 사용하여야 한다.

0 1 2 3 4
87 89 92 100 76

이런식으로 값이 있을 때 인덱스 0번째 값과 1,2,3,4 번째 값을 비교하여

1,2,3,4 값이 0보다 크면 score 값을 늘려주고 이 늘어난 값이 인덱스 0번째 점수의 등수이다.

 

그러면 여기서 필요한 것은 고정된 한 값과 이를 비교할 나머지 값인데

이를 코드로 옮기면 i를 증가하면서 반복문 돌면서 그 안에서 k를 증가하면서 반복문을 돈다.

 

for문 1 ) i가 점수 갯수만큼 반복문을 돌때 score(등수)를 1로 선언해주고

for문 2) k로 점수 갯수점수만큼 반복문을 돌면서 인덱스 k번째의 값이 인덱스 i번째 보다 큰지 조건을 건다.

             조건이 크면 score(등수)를 증가시키고 k 반복문이 끝난 뒤에 해당 등수를 새로운 배열에 추가한다.

 

등수가 담긴 scoreArr를 리턴한다.

 

'Computer Science > Algorithm' 카테고리의 다른 글

[Inflearn] 봉우리  (0) 2023.01.01
[Inflearn] 격자판 최대합  (0) 2022.12.18
[Inflearn] 점수계산  (0) 2022.12.03
[Inflearn] 뒤집은 소수  (0) 2022.11.26
[Inflearn] 소수  (0) 2022.11.23