본문 바로가기
알고리즘/Java 코딩 테스트 준비

[Java] 등수 구하기

by Dev dreamer 2023. 2. 4.

 

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

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

 

예) 92 92 92 91 경우

 

1등이 3명 4등 1명이다.

 

 

⚡ 입력 설명 

 

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

 

⚡ 출력 설명

 

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

 

✨ 입력 예제 1

 

5

87 89 92 100 76

 

✨ 출력 예제 1

 

4 3 2 1 5

 

 

💡 1. 내 생각 및 풀이 정리(1시간 정도?)


이번 문제를 풀면서 느낀 부분은 일단 뭐라도 계속 시도해보는게 중요한 듯 싶다.

 

강의를 볼까 말까 고민을 했었는데 하루에 한문제만 풀더라도 최소 2시간은 고민하는 시간을 가지고 강의를 보자.

 

처음에는 아예 감을 못잡아서 머리속으로 생각만 했었는데

 

도저히 생각이 안나서 메모장에 써서 숫자를 나열해보기도 했고

 

그래도 생각이 안나서 비슷한 코드를 적다 보니까 점점 해결 방안이 생각이 났다.

 

일단 입력을 받을때 solution에 넘겨줄 배열을 string이 아닌 int 로 넣어서 보내주고 싶었다.

그래서 형변환을 시켜서 배열에 담아줬다.

 

solution 부분의 코드를 살펴보면 우리가 살펴볼 부분은

넘겨준 arr 에 있는 int가 앞에서부터 몇번째 순서인지를 파악해야한다.

 

하지만 크기가 같으면?은 신경쓰지 않아도 된다.

arr[i]에 있는 숫자가 arr 배열 내의 숫자중에 몇번째 위치에 있는지

arr[i] 보다 앞에 몇개의 숫자가 있는지를 파악하면 된다.

 

arr[i] 를 순서대로 가져오기위한 for (i)문과

배열 내부의 크기를 비교하기위한 for (j)문을 썼다.

 

처음 이부분은 i 와 j 가 같은 즉 본인 숫자를 비교할 필요가 없어서 먼저 조건에 넣어

else if 문으로 필요한 부분만 비교하고자 했다.

arr[i]와 비교했을때 들어오는 arr[j] 가 더 크다면 cnt를 1올려준다.

이것을 arr 배열 모든 수와 비교한 후에 cnt의 수를 answer배열에 넣고

다시 cnt는 1로 초기화 해준다.

 

 

💡 2. 강사님 풀이


 

 

 

강사님이랑 내 코드랑 거의 일치한다

하나 다른점이 있다면 굳이 i 와 j 가 같을때를 조건에서 제거하지 않았다는점?

 

어차피 큰 수만 따지면 되니까 본인 수는 동일한 상황에서 조건에 영향을 미치지 않으니까

if(i==j){} 이 조건을 넣을 필요는 없었다.

 

 

코테 관련해서 많이 걱정됐었는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.

진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.

출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)

'알고리즘 > Java 코딩 테스트 준비' 카테고리의 다른 글

[Java] 봉우리 수 구하기.  (0) 2023.02.05
[Java] 격자판의 최대합 구하기  (0) 2023.02.04
[Java] 점수 계산  (0) 2023.02.03
[Java] 뒤집은 소수  (0) 2023.02.03
[Java] 피보나치 수열  (0) 2023.02.02

댓글