Programmers_체육복
🎈 문제 링크
▶ JAVA 코드
package com.company.ct0625;
public class pro_체육복 {
public static void main(String[] args) {
int n = 5; // 전체 학생의수
int[] lost = {1,2}; // 도난당한 학생
int[] reserve = {2,3}; // 여벌의 체육복
int answer = 0; // 수업을 들을수 있는 학생의 수
answer = n; // answer 에 전체 학생수 대입
// 도난당한 학생의 수(배열의길이)만큼 반복
for(int i = 0; i < lost.length; i++){
// 체육복 여분 여부 false로 설정
boolean yn= false;
int j = 0;
// yn이 false일 경우
while (!yn){
// 여벌의 체육복을 가진 학생의 수만큼 while문이 돌면 break
if(j == reserve.length){
break;
}
if(i+1< lost.length){ // i+1의 값이 도난당한 학생의 수보다 작을 때
if(lost[i+1]==reserve[j]){ // 첫번째 도난당한 학생의 옆학생과 여분의 체육복을 가져온 학생의 숫자가 같다면
j++; // j변수에 +1
continue; // 다시 while문의 처음으로 돌아간다
}
}
// 도난당한 학생의번호와 여벌의 체육복이 있는 학생의 번호가 같으면
if(lost[i] == reserve[j]){
// 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고
reserve[j] = -1;
// 체육복 여분 여부를 true(여분있음)로 변경한다
yn = true;
// 도난당한 학생의 번호 - 여분의 체육복이 있는 학생의 번호의 값이 1인경우
}else if (lost[i] - reserve[j] == 1){
// 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고
reserve[j] = -1;
// 체육복 여분 여부를 true(여분있음)로 변경한다
yn = true;
// 도난당한 학생의 번호 - 여분의 체육복이 있는 학생의 번호의 값이 -1인경우
} else if (lost[i] - reserve[j] == -1){
// 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고
reserve[j] = -1;
// 체육복 여분 여부를 true(여분있음)로 변경한다
yn = true;
} else {
// 위의 경우가 아니면 j의값을 1씩 더해준다
j++;
}
}
// while문이 돌고난후 yn(체육복 여분 여부 체크 내용)이 false라면
if(!yn){
// 수업을 들을 수 잇는 학생 수에서 1씩 감소시킨다
answer--;
}
}System.out.println(answer);
}
}
▶ 코드 설명
1) answer 에 전체 학생수 대입
2) 반복문1의 조건 : i는 도난당한 학생의 수(배열의길이)만큼 1씩 증가하면서 반복한다
3) 조건문1의 조건 : 여벌의 체육복을 가진 학생의 수만큼 while문이 돌면 break
4) 조건문2의 조건 : i+1의 값이 도난당한 학생의 수보다 작고 첫번째 도난당한 학생의 옆학생과 여분의 체육복을 가져온 학생의 숫자가 같다면 다시 while문의 처음으로 돌아간다
5) 조건문3의 조건 : 도난당한 학생의번호와 여벌의 체육복이 있는 학생의 번호가 같으면 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고 체육복 여분 여부를 true(여분있음)로 변경한다
6) 조건문4의 조건 : 도난당한 학생의 번호 - 여분의 체육복이 있는 학생의 번호의 값이 1인경우 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고 체육복 여분 여부를 true(여분있음)로 변경한다
7) 조건문5의 조건 : 도난당한 학생의 번호 - 여분의 체육복이 있는 학생의 번호의 값이 -1인경우 여벌의체육복이 있는 학생의 번호의 자리에 -1을 대입하고 체육복 여분 여부를 true(여분있음)로 변경한다
8) 조건문1~5의 경우가 아니면 j의값을 1증가시킨다
9) while문이 돌고난후 yn(체육복 여분 여부 체크 내용)이 false라면 수업을 들을 수 잇는 학생 수에서 1씩 감소시킨다
10) 수업을 들을 수 있는 학생의 수(answer)를 출력한다
▶ 출력 결과창(Console)