https://programmers.co.kr/learn/courses/30/lessons/42862
1. 풀이
쉬운 그리디 문제이다.
여러 풀이 방법이 있지만, 순서대로 하나하나 하면 풀이가 된다.
2. 코드
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int[] status = new int[n];
// 모두 1씩 초기화
for(int i = 0; i < n ;i++)
status[i] = 1;
// lost 체크
for(int l : lost){
status[l-1]--;
}
// reserve 체크
for(int r : reserve){
status[r-1]++;
}
// 주변 사람 도와주기
for(int i = 0; i < n; i++){
// 만약 체육복이 없다면
if(status[i] == 0){
// 왼쪽 사람이 2개 가지고 있다면 하나 받기
if(i-1 >= 0 && status[i-1] > 1){
status[i]++;
status[i-1]--;
continue;
}
// 오른쪽 사람이 2개 가지고 있다면 하나 받기
if(i+1 < n && status[i+1] > 1){
status[i]++;
status[i+1]--;
}
}
}
// 1개 이상 체육복 가지고 있는 사람 카운트
for(int i = 0; i < status.length; i++){
if(status[i] > 0)
answer++;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프린터 - 자바 (0) | 2020.07.04 |
---|---|
[프로그래머스] k번째 수 - 자바 (0) | 2020.07.03 |
[프로그래머스] 모의고사 - 자바 (0) | 2020.07.03 |
[프로그래머스] 완주하지 못한 선수 - 자바 (0) | 2020.07.03 |
[프로그래머스] 크레인 인형뽑기 게임 - 자바 (0) | 2020.07.03 |
댓글