본문 바로가기

TIL

[TIL]2023-08-22

오늘은 그룹으로 알고리즘 공부를 했는데

그 이후에 알고리즘 문제를 풀던 중에

코딩테스트 연습 - 체육복 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제가 오늘의 걸림돌이었다.

 

테스트케이스 3개 정도를 제외하고는 빠르게 정답이 나왔는데, 테스트케이스 3개에서 막혀서 검색을 해본 결과

reserve와 lost에 둘 다 존재할 경우가 문제였다. 해당 경우를 제외한 상태에서 코드를 돌리니 멀쩡하게 돌아갔다.

 

import java.util.Arrays;
class Solution {
      public static int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length;
        
        Arrays.sort(lost);
        Arrays.sort(reserve);
        //여분 체육복이 있지만 체육복을 잃어버린 학생을 제거
        for (int i = 0; i < lost.length; i++) {
            for (int j = 0; j < reserve.length; j++) {
                if (lost[i] == reserve[j]) {            // reserve에 있는 학생이 lost에도 있을 경우 자기 자신한테 빌린 것으로 처리
                    answer++;                           // 답은 ++ 해주고
                    lost[i] = reserve[j] = -1;          // 해당 인덱스의 lost와 reserve는 쓰지 않는 값으로 변경
                    break;
                }
            }
        }
        

        //체육복을 reserve
        for (int lostPerson : lost) {
            for (int i = 0; i < reserve.length; i++) {
                if (reserve[i] == lostPerson + 1 || reserve[i] == lostPerson - 1) {
                    answer++;
                    reserve[i] = -1;
                    break;
                }
            }
        }
        return answer;
    }
}

'TIL' 카테고리의 다른 글

[TIL]2023-08-24  (0) 2023.08.24
[TIL]2023-08-23  (0) 2023.08.23
[TIL]2023-08-21  (0) 2023.08.21
[TIL]2023-08-19  (0) 2023.08.19
[TIL]2023-08-18  (0) 2023.08.18