You will be fine

<Algorithm> 106. 체육복(프로그래머스)

by BFine
반응형

1. 체육복(프로그래머스)

  • Greedy, 문제해결능력 문제

  • Level 1 임에도 불구하고 상단이 어렵다고 느껴졌다. 길게 만들면 정말 길어질 수 있는 문제라고 생각했고 사고하는 방식을 배워야 겠다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Arrays;
import java.util.stream.IntStream;
 
public class Solution {
    static int not = 0;
    public int solution(int n, int[] lost, int[] reserve) {
         int[] clothes = new int[n];
        /******************************
         * 여벌 옷도 없는 사람들을 늘려주고
         * 여벌 옷이 없는 경우를 찾아서
         *     1. 앞 또는 뒤 2벌
         *     2. 앞 뒤 모두 2벌
         * 의 경우가 발생하면 모두 옷을 늘려주고
         * 없는 사람의 수를 줄여준다.
         * 이때 같은 사람을 2벌 가능하게 해주는 이유는
         * 도난 당한 사람이 2명 이상이기 때문에
         * 있는 사람이라 생각하고 해주어도 무방하다.
         * 결과는 전체 - 없는 사람을 하면 된다.
         *******************************/
         
         Arrays.fill(clothes, 1);
         IntStream.of(reserve).forEach(i->clothes[i-1]++);
         IntStream.of(lost).forEach(i->{clothes[i-1]--if(clothes[i-1]==0)not++;});
         
         IntStream.range(1, n-1).filter(i->clothes[i]==0).forEach(i->{
             if(clothes[i-1== 2) {
                 clothes[i]++;
                 clothes[i-1]--
                 not--;
             }else if(clothes[i+1== 2) {
                 clothes[i]++;
                 clothes[i+1]--;
                 not--;
             }
             
         });
         
         return n - not;
     }
}
 
 
cs



참고 & 출처  



반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기