문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
체육복의 갯수를 단서로 잡고 풀이했다.
도난당한 학생의 체육복 갯수는 -1, 일반 학생의 갯수는 0, 체육복 여벌이 있는 학생은 1로 잡았다.
1. 학생 리스트를 만들어서 현재 학생들의 체육복 갯수 상태를 채워주었다.
2. 현재 인덱스의 값이 -1이라면, 앞 뒤를 체크하여 갯수를 조절해주었다.
내 코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int student[30];
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
// lost의 체육복 갯수
for (int i = 0; i < lost.size(); i++)
{
student[lost[i]]--;
}
// reserve 체육복 갯수
for (int i = 0; i < reserve.size(); i++)
{
student[reserve[i]]++;
}
for (int i = 1; i <= n; i++)
{
if (student[i] == -1)
{
if (student[i - 1] == 1)
{
student[i - 1] = 0;
student[i] = 0;
}
else if (student[i + 1] == 1)
{
student[i + 1] = 0;
student[i] = 0;
}
}
if (student[i] >= 0)
{
answer++;
}
}
return answer;
}
'코딩테스트 준비' 카테고리의 다른 글
[ C++ ] 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2025.02.19 |
---|---|
[ C++ ] 프로그래머스 카드 뭉치 (0) | 2025.02.10 |
[C++] 프로그래머스 3진법 뒤집기 (0) | 2025.01.16 |
[C++] 프로그래머스 자릿수 더하기 (0) | 2024.12.26 |
코딩테스트 공부 순서 (3) | 2024.10.22 |