728x90
코드 힌트
- 학생 배열 초기화:
- 모든 학생의 체육복 개수를 저장할 배열을 생성하고, 각 요소를 1로 초기화합니다.
- 배열을 초기화하는 방법으로 for문을 사용해 각 요소에 1을 넣거나, Arrays.fill(배열, 1)을 사용할 수 있습니다.
- 잃어버린 체육복 반영:
- lost 배열을 순회하며, 해당 학생의 체육복 개수를 1 감소시킵니다.
- 여벌 체육복 반영:
- reserve 배열을 순회하며, 해당 학생의 체육복 개수를 1 증가시킵니다.
- 체육복 빌려주기:
- 학생 배열을 순회하며, 체육복이 2개인 학생을 찾습니다.
- 해당 학생의 왼쪽 또는 오른쪽 학생이 체육복이 없는 경우, 체육복을 빌려줍니다.
- 체육복을 가진 학생 수 계산:
- 학생 배열을 순회하며, 체육복을 가지고 있는 학생 수를 계산하여 result에 저장합니다.
정답은 더보기 클릭
더보기
import java.util.Arrays;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int result = 0;
// 각 학생의 체육복 개수를 저장하는 배열 초기화
int[] student = new int[n];
Arrays.fill(student, 1); // 모든 학생은 처음에 체육복을 1개씩 가지고 있음
// 체육복을 잃어버린 학생의 체육복 개수를 1 감소
for (int i = 0; i < lost.length; i++) {
student[lost[i] - 1] -= 1;
}
// 여벌 체육복이 있는 학생의 체육복 개수를 1 증가
for (int i = 0; i < reserve.length; i++) {
student[reserve[i] - 1] += 1;
}
// 체육복 빌려주기 처리
for (int i = 0; i < student.length; i++) {
if (student[i] == 2) { // 여벌 체육복이 있는 경우
if (i - 1 >= 0 && student[i - 1] == 0) { // 왼쪽 학생이 체육복이 없는 경우
student[i - 1] = 1;
student[i] = 1;
} else if (i + 1 < student.length && student[i + 1] == 0) { // 오른쪽 학생이 체육복이 없는 경우
student[i + 1] = 1;
student[i] = 1;
}
}
}
// 체육복을 가진 학생 수 계산
for (int i = 0; i < student.length; i++) {
if (student[i] > 0) {
result++;
}
}
return result;
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 자릿수 더하기 (1) | 2024.07.16 |
---|---|
[프로그래머스] 문자열 내 p와 y의 개수 (3) | 2024.07.16 |
[프로그래머스] 신규 아이디 추천 (0) | 2024.07.12 |
[프로그래머스] 약수의 합 (0) | 2024.07.10 |
[프로그래머스] 두 정수 사이의 합 (0) | 2024.07.10 |