728x90
체육복
문제 설명
모든 학생들에게 체육복을 1개씩 주고, 잃어버린 사람은 -1 여벌이 있는 사람은 +1 하여 체육복을 가지고 있지않은 학생을 기준으로 좌, 우를 탐색하며 답을 찾아낸다.
문제 풀이
소스코드 : C++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
vector<int> students(n+1,1);
for(auto r : reserve)students[r] +=1;
for(auto l : lost) students[l] -=1;
for(int i=1; i<=n; i++){
if(students[i] == 0){
if(students[i-1] == 2) students[i-1] = students[i] = 1;
else if(students[i+1] == 2) students[i] = students[i+1] = 1;
}
}
for(int i=1; i<=n; i++)
if(students[i])answer++;
return answer;
}
소스코드 : Python
def solution(n, lost, reserve):
answer = 0
students = [1 for i in range(n+2)]
for l in lost: students[l] -=1
for r in reserve: students[r] +=1
for i in range(1,n+1):
if students[i] == 0:
if students[i-1]==2:
students[i-1] = 1
students[i] = 1
elif students[i+1] == 2:
students[i] = 1
students[i+1] = 1
for i in range(1,n+1):
if students[i]:
answer+=1
return answer
728x90
300x250