[프로그래머스/greedy/level1] 체육복
7727 단어 greedylevel1체육복programmersgreedy
핵심유형
- 기본 구현 문제
문제 핵심 전략
- 학생 번호대로 순차적으로 체육복을 나눠준다.
- 체육복을 도난당한 학생과 도난 당하지 않는 학생의 체육복 수를 수정한다.
- 주변에 학생에게 체육복을 나눠준다.
문제 풀이 코드
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
//1. 전체 학생들의 배열 생성(기준 1로 설정)
int[] student = new int[n+1];
Arrays.fill(student, 1);
for(int reserveStuNum : reserve) student[reserveStuNum] += 1;//여벌의 체육복을 가지고 있는 학생처리
for(int lostStuNum : lost) student[lostStuNum] -= 1;//체육복을 잃어버린 학생 처리
//체육복 빌려줄지 말지 하는 알고리즘
for(int lostStuNum : lost) {
int prev_lostStuNum = lostStuNum -1;
int back_lostStunum = lostStuNum + 1;
for (int i = 0; i < reserve.length; i++) {
if(prev_lostStuNum == reserve[i] || back_lostStunum == reserve[i]) {
if(student[reserve[i]] > 1 && student[lostStuNum] == 0) {
student[lostStuNum]++;
student[reserve[i]]--;
}
}
}
}
//수업에 참여할 수 있는 수 count
for (int i = 1; i < student.length; i++) {
if(student[i] >= 1) answer++;
}
return answer;
}
}
Author And Source
이 문제에 관하여([프로그래머스/greedy/level1] 체육복), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pbg0205/프로그래머스greedylevel1-체육복저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)