https://programmers.co.kr/learn/courses/30/lessons/42628

문제

입력&출력


문제해석&접근버

우선 문제에 우선순위'큐' 라서 큐를 써야하나? 라는 생각을함.

하지만 최소값, 최대값을 입력에 맞게 빼려면 (앞,뒤로) 큐로 구현하면 복잡해질 것(상황에 따라서 오름차순, 내림차순 정렬을 해야함) 예상

따라서 List로 구현!!

 

난이도

☆ 

다시 풀어볼만함


실수

'I' (Input) 경우, 최소/최대값 경우 총 3가지 경우가 입력이 되는데, 최소값제거->sort,최대값제거->sort 해줬는데 Input->sort를 안해주는 실수를 함 

만약 Operations에서 마지막의 경우가 "I n" 라면 마지막 값 입력 후 sort를 해줘야 최대값, 최소값을 출력함. 

 

스스코드

 

#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <algorithm>
#include <string>

using namespace std;
vector<int> solution(vector<string> operations) {
    list<int> l;
    vector<int> answer;
	for (int i = 0; i < operations.size(); i++)
	{
		string str = operations[i];

		//삽입
		if (str[0] == 'I')
		{
			string strNum = "";
			int parseInt;
			for (int j = 2; j < str.size(); j++)
			{
				strNum += str[j];
			}
			parseInt = stoi(strNum); //string -> int 변경함수
			l.push_back(parseInt); l.sort();
		}
		//제거
		else 
		{
			if (str[2] == '-')
			{
                if (l.empty()) continue;
				l.sort();
				l.pop_front();
			}
			else
			{
                if (l.empty()) continue;
				l.sort();
				l.pop_back();
			}
		}
	} 
    
    if(l.size() > 1 ) 
    {
        answer.push_back(l.back());
		answer.push_back(l.front());
    }
    //만약 최대값 최소값을 구분할 수 없는 0개,1개 일 경우
    else
    {
        answer.push_back(0);
        answer.push_back(0);
    } 
    return answer;
}

+ Recent posts