반응형
관련글
배열 관련 포스팅은 여기를 참조
1. 개요
문제의 링크는 여기를 참조
문제의 내용은 아래의 더보기를 클릭하여 참조
N명의 학생 중, 체육복의 여벌이 있는 학생(0~N) / 여벌이 없는 학생(0~N) / 도난 당한 학생(0~N)이 있고, 인접 번호일 경우 도난 당한 학생에게 여별이 있는 학생이 체육복 빌려주기가 가능할 때, 체육복을 입고 체육 수업을 들을 수 있는 최대 인원을 구하는 문제
참고로, 도난 당한 학생이 여벌이 있었을 수도 있다.
2. 풀이
각 학생 번호 별로 현재 가진 체육복의 수를 구하고, 반복문을 통해 대여가 필요한 학생에 대여 후, 체육복을 입을 수 있는 학생의 수는 구하는 문제
3. 코드
아래의 코드를 통해 정답을 알아보자.
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// 현재 옷의 수를 저장
int[] clothes = new int[n+1];
for(int i=0; i < lost.length; i++){
clothes[lost[i]]--;
}
for(int i=0; i < reserve.length; i++){
clothes[reserve[i]]++;
}
// 옷의 수에 따라 체육복 나눠주고 그 결과 저장
int answer = 0;
for(int i=1; i <= n; i++){
if(clothes[i] == -1){
// 더 작은 번호 학생이 여벌이 있는 경우
if(i-1 > 0 && clothes[i-1] == 1){
answer++;
// 더 큰 번호 학생이 여별이 있는 경우
} else if(i+1 <= n && clothes[i+1] == 1){
clothes[i+1]--;
answer++;
}
// 원래 갖고 있거나, 여벌이 있는 경우
} else if(clothes[i] >= 0){
answer++;
}
}
return answer;
}
}
읽어주셔서 감사합니다. 오류가 있으면 지적해주시면 반영하겠습니다.
반응형
'알고리즘 풀이(Problem Solving) > 기본(문자열 처리 등)' 카테고리의 다른 글
알고리즘 풀이 - 프로그래머스(문자열 압축(Lv 2), 문자열) (0) | 2021.07.11 |
---|---|
알고리즘 풀이 - 프로그래머스(신규 아이디 추천(Lv 1), 문자열) (0) | 2021.06.26 |
알고리즘 풀이 - 프로그래머스(소수 만들기(Lv 1), 소수) (0) | 2021.06.24 |