일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SW Expert Academy
- 백준
- Spotify Api
- SECS
- 회귀
- CS
- spotify
- programmers
- python
- SECS-II
- SECS/GEM
- Baekjoon
- regression
- 비트겟
- c
- spring boot
- 프로그래머스
- 회원가입
- Spring
- MYSQL
- java
- SWEA
- 자바
- 스포티파이
- Spring JPA
- 파이썬
- C++
- modern c++
- Gem
- Computer Science
Archives
- Today
- Total
비버놀로지
[Programmers 프로그래머스] 42862 체육복 본문
728x90
programmers.co.kr/learn/courses/30/lessons/42862
체육복을 가지고 있는 학생과 추가로 가지고 있는 학생을 두 배열로 해서 비교를 해나가며 체육복을 하나씩 가지게 만들어 준다.
그리고 나서 체육복을 가지고 있는 학생들의 수를 세어준다.
import java.util.Arrays;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer=0;
int cloth[]=new int[n+1]; //체육복을 가진 학생
int extra[]=new int[n+1]; //추가로 가지고 있는 학생
Arrays.fill(cloth, 1); //모두 1개를 가지고 있다고 한다.
cloth[0]=0;
for (int i = 0; i < lost.length; i++) { //체육복을 잃어버린 학생들 -1 해주기
cloth[lost[i]]--;
}
for (int i = 0; i < reserve.length; i++) { //추가로 체육복을 가지고 있는 학생
extra[reserve[i]]++;
}
for (int i = 1; i < cloth.length; i++) { //내가 추가로 체육복이 있다면 옷을 1로
if(cloth[i]==0&&extra[i]==1) {
cloth[i]=1;
extra[i]=0;
}
}
for (int i = 1; i < cloth.length; i++) { //해당 학생의 앞,뒤학생이 추가 옷이 있다면
if(cloth[i]==0) {
if(extra[i-1]==1) {
cloth[i]=1;
extra[i-1]=0;
}else if(i+1<cloth.length&&extra[i+1]==1) {
cloth[i]=1;
extra[i+1]=0;
}
}
}
for (int i = 0; i < cloth.length; i++) {
if(cloth[i]==1) {
answer++;
}
}
return answer;
}
}
728x90
'ALGORITM > JAVA' 카테고리의 다른 글
[Programmers 프로그래머스] 12901 2016년 (0) | 2021.01.07 |
---|---|
[Programmers 프로그래머스] 42748 K번째수 (0) | 2021.01.07 |
[Programmers 프로그래머스] 42840 모의고사 (0) | 2021.01.07 |
[Programmers 프로그래머스] 42576 완주하지 못한 선수 (0) | 2021.01.06 |
[Programmers 프로그래머스] 68644 두 개 뽑아서 더하기 (JAVA) (0) | 2021.01.06 |
Comments