본문 바로가기

TIL

[TIL]2023-08-19

오늘도 여러 알고리즘 문제를 풀었는데 그 중에 인상이 깊었던 문제는

코딩테스트 연습 - 과일 장수 | 프로그래머스 스쿨 (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