- 문제 )

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

- Sol )


문제를 읽고 접근방법은 일단 처음 드는 생각은 이 경우의 수는

1. 여분이 있는 것과 도난 당한 것을 구분 -> 이유? 여분이 있었는데 도난 당했을 수도 있어서
2. 만약 체육복이 도난 당했다
if 왼쪽에 여분 체육복 있음 / 왼쪽 빌림 break
else if 오른쪽에 여분 체육복 있음 / 오른쪽 빌리고 break
else 왼쪽 오른쪽 여분 체육복이 없음 ? 그럼 얘는 옷이 없음

 

- Code )

#include <string>
#include <vector>
#include<iostream>
#include<cstdio>
using namespace std;
int stu[31];
// 여벌옷을 가지고 온 학생도 도난 당할 수 있다, 이때는 남은 체육복이 하나이기에 다른이에게 체육복 빌릴수 없
int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer=0;
    int sum =0;
	for(int i=0;i<reserve.size();i++){
		stu[reserve[i]]+=1;
	}
	for(int i=0;i<lost.size();i++){
		stu[lost[i]]-=1;
	}
	for(int i=1;i<=n;i++){
		if(stu[i]==-1){
			if(stu[i-1]==1){
				stu[i-1]=stu[i]=0;
			} else if(stu[i+1]==1){
				stu[i+1]=stu[i]=0;
			} 
		}
	}
	for(int i=1;i<=n;i++){
		if(stu[i]!=-1) answer++;
	}
    return answer;
}

 

- Result )

- Ref )

문제좀 잘 읽자.. 처음에는 괜히 시간줄여본다고 lost에서 pop해서 할까 했는데 생각해보니 시간초과 날 것 같았다. 

그리고 처음에 문제를 대충 읽어서.. 저 빨간 박스를 보지 못했다.ㅜ

 

'Algorithm' 카테고리의 다른 글

[개념] Union-Find 기법  (0) 2020.10.21
[프로그래머스]이중우선순위큐 - 힙  (0) 2020.06.25
[프로그래머스] 디스크컨트롤러 - 힙  (0) 2020.06.24

+ Recent posts