자바문제[석차 구하기]

이수보🧑🏻‍💻·2021년 11월 22일
0

문제

목록 보기
2/6

앞서 선택, 버블 정렬을 살펴보았다._ 이 문제는 정렬의 문제는 아니지만 매커니즘은 정렬과 같다고 생각한다.
이 문제도 비교해주고 설정해주고 우리가 앞에서 보았던 정렬도 비슷하게 비교해주고 설정해주고
다를 것 하나 없다. ㅎㅎ

석차 구하기
문제) 10명의 학생의 점수를 임의로 설정하여 각 학생별로 등수를 매기시오

아래로 내리면 답이 있다. 하지만 이 답을 보기 전 위 문제에 대해 충분히 고민을 했다고 판단되면 그 때 답을 봐도 늦지 않다. 그러니 문제가 어렵고 애매모호 한 사람들을 위해 힌트를 주자면,

Hint - 1 : 남과 비교하기 전까지는 모두 자신이 1등이라고 생각한다.
Hint - 2 : 점수가 클 수록 등수가 높다.

Hint를 봐도 이해가 안간다면 밑으로 내려 답을 봐도 좋다........ㅠㅠ 더 풀어보지ㅠㅠㅠ
그래도 제발 30분만 더 풀어봐줘ㅠㅠ

		int[] score = new int[10];
		
1.		for(int i = 0; i < score.length;i++){
			score[i] = (int)(Math.random() * 100) + 1;      
		}
2. 		int[] rank = new int[score.length];
		
3.		for(int i = 0; i < rank.length; i++){    
			rank[i] = 1;
		}
4.		for(int i = 0; i < score.length; i++){	 
			for(int j = 0; j < score.length; j++){
5.				if(score[i] < score[j]){      
6.					rank[i]++;
				}
			}
		}
7.		for(int i = 0; i < arr.length; i++){
			System.out.println(arr[i] + " : " + rank[i] + "등");
		}

문제에 대한 설명.

  1. 10명의 학생에 1 ~ 100의 점수를 랜덤으로 발생시켜 넣어준다.
  2. 학생 10명의 등수를 담을 배열을 선언.
  3. 등수를 모두 1등으로 초기화한다.
  4. 학생의 크기만큼 배열을 돌리고 학생 한 명과 남은 9명을 전부 비교 해야하기 때문에 이중for문을 돌린다.
  5. 만약 i 학생의 점수가 j학생의 점수보다 낮을 때에는,
  6. rank[i] i 학생의 rank를 + 해준다.
  7. 등수를 i번지에 맞춰 설정했기 때문에 순서를 맞추기 위해 학생, 등수[i]를 동시 출력해준다.

앞서 내가 말한 것 처럼 위 문제가 어려웠던 사람들은 앞으로도 남의 도움이 없이 혼자 해결해 나갔으면 좋겠다.
만약 남이 도와준다면 남의 지식을 내것으로 만들때 까지 복습 또 복습!!!!!!!!!!!!

0개의 댓글