[프로그래머스] 체육복 | C++

2024. 2. 17. 18:05·프로그래머스 문제풀이

그리디

- 조건을 따져가며, 특정 번호의 학생에게서 체육복을 빌릴 수있는지확인해가며 품

 

0. 따로 빌려줄 수 있는 학생번호 저장할 배열 생성 -> reserve에 속한 학생을 인덱스로 표시하고 값을 1로 만들어줌

1. lost중에 reserve에도 속해있는 학생을 erase함.

2. lost, reserve 오름차순 정렬(이거 안해서 테케 13,14인가를 틀리던..)

3. lost 개수만큼 반복돌며 reserve[lost[i]-1]==1인지,   reserve[lost[i]+1]==1인지 확인. 빌리고 나서는 해당 reserve 인덱스 값을 0으로 변경.(이제 얘한테는 빌릴 수 없다.)

 

오름차순 정렬한 이유도 3번처럼 무조건 왼쪽부터 확인해서 체육복 빌렸을때, 서로 겹치는 경우가 없게 하려구. 

 

레벨 1에서 이렇게 헤맬일인지 .. 

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
                
int reservePossible[31]; //빌려줄 수 있는 학생 번호

int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer = 0;
    int resNum = reserve.size();
    
    for(int i =0;i<resNum;i++){
        reservePossible[reserve[i]] = 1; // 빌려줄 수 있는 놈들 표시
    }
    
    for(auto iter =lost.begin(); iter!=lost.end();){ //빌려줄 수 있었는데 lost한 경우 빼기 
        if(reservePossible[*iter] == 1){
            reservePossible[*iter] = 0;
            iter = lost.erase(iter);
        }else{
            iter++;
        }
    }
    
    int lostNum =lost.size();
    sort(lost.begin(),lost.end());
    sort(reserve.begin(),reserve.end());

    for(int i =0;i<lostNum;i++){ //잃어버린 학생들 반복문 돌면서 누구에게 빌릴 수 있는지..
        
        if(lost[i]>1&&reservePossible[lost[i]-1] == 1){
            //내 왼쪽 친구에게 빌릴 수 있는 경우
            reservePossible[lost[i]-1] = 0;
            continue;
        }
        
        if(lost[i]< n&&reservePossible[lost[i]+1] == 1){
            //오른쪽 친구에게 빌릴 수 있는 경우 
            reservePossible[lost[i]+1] = 0;
            continue;
        }
        //양 옆 친구한테 못빌렸으면 체육복 없는 친구가 한명 생긴것
        answer++;
    }
    return n-answer;
}

 

'프로그래머스 문제풀이' 카테고리의 다른 글

[프로그래머스] 여행경로 | c++  (0) 2024.02.20
[프로그래머스] 소수찾기 | c++  (0) 2024.02.17
[프로그래머스] 등굣길 | c++  (1) 2024.02.12
'프로그래머스 문제풀이' 카테고리의 다른 글
  • [프로그래머스] 여행경로 | c++
  • [프로그래머스] 소수찾기 | c++
  • [프로그래머스] 등굣길 | c++
c_jm
c_jm
  • c_jm
    c_jm
    c_jm

    🎋 어제보다 발전한 오늘

  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 프로젝트 (6)
      • 백준 문제풀이 (19)
      • 프로그래머스 문제풀이 (4)
      • 공부 (1)
      • 문제 해결 (2)
      • 기타 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker-compose.yml
    html
    docker
    글자색
    nginx
    jquery
    도커컴포즈
    다크모드
    복붙
    docker-compose
    백준 #1152 #c++
    리버스 프록시
    리버스 프록시 서버
    reverse proxy
    코드블럭
    티스토리 다크모드
    인라인 css
    도커
    홈서버
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
c_jm
[프로그래머스] 체육복 | C++
상단으로

티스토리툴바