문제
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
< 체육복 >
문제 풀이 (Java)
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int arr[] = new int[n + 1];
for (int i = 1; i <= n; i++) {
arr[i] = 1;
}
for (int i = 0; i < lost.length; i++) {
arr[lost[i]] -= 1;
}
for (int i = 0; i < reserve.length; i++) {
arr[reserve[i]] += 1;
}
for (int i = 1; i <= n; i++) {
if (arr[i] == 0) {
if (arr[i - 1] > 1) {
arr[i - 1] -= 1;
arr[i] += 1;
} else if (i < n && arr[i + 1] > 1) {
arr[i + 1] -= 1;
arr[i] += 1;
}
}
}
for (int i = 1; i <= n; i++) {
if (arr[i] > 0) {
answer += 1;
}
}
return answer;
}
}
각 학생한테 체육복 1개씩 있다고 가정하여 arr를 초기화한다. lost와 reserve 배열을 순회하며 도난당했으면 -1을, 여벌의 체육복을 가져왔으면 +1을 한다. arr을 순회하며 체육복이 없다면 왼쪽, 오른쪽 순으로 살펴보며 여벌의 체육복이 있다면 빌린다. 최종 arr을 순회하며 체육복이 있는 학생의 수를 센 후 answer을 반환한다.

출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 구명보트 (0) | 2026.08.20 |
|---|---|
| [programmers] 모의고사 (0) | 2026.08.18 |
| [programmers] 더 맵게 (0) | 2026.08.14 |
| [programmers] 주식가격 (0) | 2026.08.13 |
| [programmers] 올바른 괄호 (0) | 2026.08.12 |