오늘도 여러 알고리즘 문제를 풀었는데 그 중에 인상이 깊었던 문제는
코딩테스트 연습 - 과일 장수 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이다.
본인은 해당 문제를
public static int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score);
int[] answerArr = new int[score.length];
for (int i = 0; i < score.length; i++) {
answerArr[i] = score[score.length-1-i];
}
for (int i = 0; i < answerArr.length; i++) {
System.out.print(answerArr[i]+ " ");
}
System.out.println();
int idx = m;
while(idx <= score.length){
System.out.println(answerArr[idx-1]);
answer += answerArr[idx-1] * m;
idx += m;
}
return answer;
}
이런 식으로 정렬한 후에 뒤집어서 새 배열을 만들고 그 배열을 이용하는 방식으로 문제를 해결했는데
다른 사람이 푼 풀이를 보니
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score);
for(int i = score.length; i >= m; i -= m){
answer += score[i - m] * m;
}
return answer;
}
}
이런 식으로 깔끔하게 풀었다.
for 문을 사용할 때 주로
for (int i = 0; i < 길이; i++) {
}
방식으로만 자주 사용하다보니 그 안의 부분을 수정할 수 있었다는 사실을 잊고 살았던 것 같다.
'TIL' 카테고리의 다른 글
| [TIL]2023-08-22 (0) | 2023.08.22 |
|---|---|
| [TIL]2023-08-21 (0) | 2023.08.21 |
| [TIL]2023-08-18 (0) | 2023.08.18 |
| [TIL]2023-08-17 (0) | 2023.08.17 |
| [TIL]2023-08-16 (0) | 2023.08.16 |