<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 |
참고 & 출처
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 108. 전화번호목록(프로그래머스) (0) | 2019.02.09 |
---|---|
<Algorithm> 107. 예산(프로그래머스) (1) | 2019.02.09 |
<Algorithm> 105. 1057번 토너먼트 (0) | 2019.02.06 |
<Algorithm> 104. 1389번 케빈 베이컨의 6단계법칙 (0) | 2019.02.05 |
<Algorithm> 103. 2583번 영역구하기 (0) | 2019.02.05 |
블로그의 정보
57개월 BackEnd
BFine