-
[Algorithm] 프로그래머스 C++ : 체육복Algorithm 2020. 8. 27. 21:56
https://programmers.co.kr/learn/courses/30/lessons/42862#
학생들의 체육복 개수를 담고있는 벡터 v를 만들고
0. 모든 학생이 v값이 1이라고 넣고
1. reserve에 학생이 속하면 +1
2. lost에 학생이 속하면 -1
이후 lost에 속한 학생들중
체육복의 수(v)가 0인 애들(n)만
앞쪽 번호 학생(n-1) 뒷쪽 번호 학생(n+1)을 if/else if로 체육복이 2개인지 확인하면서
2개이면 그 학생 체육복 수를 -1하고 도난당한 학생(n) 체육복을 +1 해준다.
맨 마지막에 v 전체를 돌면서 체육복이 0이 아닌 애들이 있으면 answer를 +1 한다.
Code
#include <string> #include <vector> #include <iostream> using namespace std; int solution(int n, vector<int> lost, vector<int> reserve) { int answer = 0; vector<int> v(n+1); for(int i=1; i<=n; i++) { v[i]=1; for(int n: reserve) { if(n == i) v[i]++; } for(int n: lost) { if(n == i) v[i]--; } } for(int n: lost) { if(v[n]==0) { if(v[n-1]==2) { v[n-1]--; v[n] = 1; } else if(v[n+1]==2) { v[n+1]--; v[n] = 1; } } } for(int i=1; i<=n; i++) { if(v[i]>0) answer++; } return answer; }
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스 C++ : 타겟 넘버 (0) 2020.09.01 [Algorithm] DFS(깊이 우선 탐색), BFS(너비 우선 탐색) (0) 2020.08.31 [Algorithm] 프로그래머스 C++ : 카펫 (0) 2020.08.27 [Algorithm] 프로그래머스 C++ : 소수 찾기 (1) 2020.08.25 [Algorithm] 프로그래머스 C++ : 모의고사 (0) 2020.08.24