오늘은 그룹으로 알고리즘 공부를 했는데
그 이후에 알고리즘 문제를 풀던 중에
코딩테스트 연습 - 체육복 | 프로그래머스 스쿨 (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 |