코테/프로그래머스
[프로그래머스/Lv. 0] 등수 매기기
imname1am
2023. 1. 31. 17:20
반응형
1차 코드 (오답)
class Solution {
public int[] solution(int[][] score) {
// 1. 평균값 구하기
int[] answer = new int[score.length];
for(int i=0 ; i<score.length ; i++) {
for(int j=0 ; j<2 ; j++) {
answer[i] += score[i][j];
}
answer[i] /= 2;
}
// 2. 등수 매기기
int[] real = new int[answer.length];
// 자신보다 작은 값이 있으면 순서 배열에 +1해서 순위 밀려남
for(int i=0 ; i<real.length; i++) {
for(int j=0 ; j<real.length ; j++) {
if(answer[i] < answer[j]) {
real[i]++;
}
}
// 순서 1부터 시작하게
real[i]++;
}
return real;
}
}
진료순서 정하기 문제랑 비슷한 줄 알고 비슷하게 풀었는디...
테스트 3,6에서 실패가 떴다...🤦♀️
그래서 질문하기를 다시 봤다...
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반례를 봤고... 뭐 어떻게 해야할지 모르겠었다...
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
누가 풀이를 힌트에 올려주셨다.. (압도적 감사...🙏)
정답 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[][] score) {
int[] answer = new int[score.length];
Arrays.fill(answer,1);
for(int i=0 ; i<score.length; i++) {
for(int j=0 ; j<score.length ; j++) {
if(score[i][0] + score[i][1] > score[j][0] + score[j][1]) {
answer[j]++;
}
}
}
return answer;
}
}
생각해보니 굳이 평균 구하고 있을 필요가 없었다...
어차피 합이 높을수록 평균도 높은 걸텐데...
그리고 Arrays.fill(answer, 1)
을 해서 배열을 1로 다 채워줬고!!! (잊지 말자.. 배열 초기화 원하는 값으로 채우기)
그리고 작은 값에 +1해줘야 하니까 answer의 인덱스도 answer[i]
가 아니라 answer[j]
였던 것...
이리 간단한 것을 또 헤매고 있었다...😵
반응형