반응형
코딩테스트 연습으로 푼 문제인데 처음이라그런지 푸는데 굉장히 오래걸렸다.
처음 시도로는 몇몇 테스트 케이스가 계속 오류가 떠서 결국 검색해보았는데
다른사람들의 풀이 방식만을 보고 혼자 코딩해보아서 좀 지져분하다.
#include#include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = 0; //학생들의 체육복 유무를 확인하기 위한 배열 생성 기본값은 0 // -1 : 체육복이 없음, 0 : 체육복 있음, 1 : 체육복 2벌 vector check(n); //체육복을 가지고 있지 않으면 -1로 세팅 for(int i = 0; i < lost.size(); i++){ check[lost[i]-1]--; } //체육복이 2벌이면 2로 세팅 for(int i = 0; i < reserve.size(); i++){ check[reserve[i]-1]++; } for(int i = 0; i < check.size(); i++){ //제일처음학생은 그 앞 학생이 없기 때문에 첫 학생에게 조건 적용 if(i == 0){ if(check[i] < 0 ){ if(check[i+1] > 0) { //체육복이 없는 학생을 -1에서 0으로 변경 check[i]++; //체육복을 빌려준 학생을 1에서 0으로 변경 check[i+1]--; } } } //마지막 학생도 그 뒤 학생이 없기때문에 마지막학생 조건 적용 if(i > 0 && i < check.size()-1){ if(check[i] < 0 ){ if(check[i+1] > 0){ //체육복이 없는 학생을 -1에서 0으로 변경 check[i]++; //체육복을 빌려준 학생을 1에서 0으로 변경 check[i+1]--; } if(check[i-1] > 0){ check[i]++; check[i-1]--; } } } } // 값이 0과 1인 학생은 체육복이 있는 학생이기 때문에 학생 수 증가 for(int i = 0; i < check.size(); i++){ if(check[i] == 0 || check[i] == 1) answer++; } return answer; }
반응형
'개인공부 > Algorithm(C, C++)' 카테고리의 다른 글
C++ iomanip 헤더, 소수점 자리 출력 fixed (0) | 2021.07.02 |
---|---|
C++ Sort (String 정렬) (0) | 2021.06.14 |
[C, C++] 한 줄 입력받기, 원하는 자릿수만큼 입력받기 (0) | 2020.02.18 |
QuickSort(퀵정렬), C, C++ (0) | 2020.01.14 |
MergeSort(합병정렬), C, C++ (0) | 2020.01.14 |