본문 바로가기
알고리즘/Array

체육복

by e-pd 2020. 9. 6.

programmers.co.kr/learn/courses/30/lessons/42862?language=java

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번�

programmers.co.kr

 

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
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int[] clothes = new int[n];
        
        for (int l : lost) {
            clothes[l - 1-= 1;
        }
        
        for (int r : reserve) {
            clothes[r -1+= 1;
        }
            
        /**
        * c[i] 값이 음수면 체육복이 없는 상태, 
        * c[i] 값이 0이면 1개만 갖고있는 상태
        * c[i] 값이 1이상이면 여분이 있는 상태
        */
        for (int i = 0; i < n; i++) {
            // 앞번호에게 빌리기
            if (i > 0 && clothes[i] < 0 && clothes[i - 1> 0) {
                clothes[i] += 1;
                clothes[i - 1-= 1;
            }
            
            // 뒷번호에게 빌리기
            if (i + 1 < n && clothes[i] < 0 && clothes[i + 1> 0) {
                clothes[i] += 1;
                clothes[i + 1-= 1;
            }
        }
        
        int answer = 0;
        for (int cloth : clothes) {
            if (cloth >= 0) {
                answer += 1;
            }
        }
        
        return answer;
    }
}
cs

 

'알고리즘 > Array' 카테고리의 다른 글

서울에서 김서방 찾기  (0) 2020.09.09
가운데 글자 가져오기  (0) 2020.09.09
구명보트  (0) 2020.09.05
문자열 내 마음대로 정렬하기  (0) 2020.08.31
다음큰 숫자  (0) 2020.08.30