[기록용]
기록용이므로 자세한 풀이는 설명하지 않습니다
이전에 풀었던 방식은 이중포문을 돌아서 좀 더 간단하게 풀어보기로 함
1) 체육복을 잃어버린 사람은 -1, 갖고있는 사람은 0, 여유분이 있는 사람은 1 로 표기함
2) -1 값을 가진 사람 앞뒤에 여유분이 있는 사람이 있는지 확인
3) 있으면 빌려줘서 둘다 0으로 초기화
4) 없으면 answer 값을 -1 씩 감소 ( 체육복을 못입는 사람이므로)
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
int[] arr = new int[n+2]; // 처음 인덱스와 마지막 인덱스를 0으로 해놓기 위함
for(int i : lost){
arr[i]--;
}
for(int i: reserve){
arr[i]++;
}
for(int i=1; i<arr.length-1; i++){
if(arr[i] == -1){
if(arr[i-1]== 1){
arr[i] = 0;
arr[i-1] = 0;
}
else if(arr[i+1] ==1){
arr[i] = 0;
arr[i+1] = 0;
}
else
answer --;
}
}
return answer;
}
}
'코테 준비-문제풀기' 카테고리의 다른 글
Dynamic Programming (0) | 2022.04.14 |
---|---|
Greedy (0) | 2022.04.13 |
해쉬- 학급회장/ 애너그램/ 매출액의 종류 * (0) | 2022.04.05 |
프로그래머스 - 전화번호 목록 (자바/java) (0) | 2022.02.23 |
프로그래머스 - 완주하지 못한 선수_해시맵(HashMap) 사용해 풀기 (0) | 2022.02.06 |