[2023 하계 모각소] 미팅 #4 (08/17)

동엽·2023년 8월 18일
0

23 하계 모각소

목록 보기
5/6
post-thumbnail

2023/08/17 14:00-17:00

Summary

https://school.programmers.co.kr/learn/courses/30/parts/12081
이번 미팅에서는 스택/큐를 활용하는 문제들을 풀이했다. 각자 일정과 휴가 등이 겹치는 바람에 조금 미뤄져서, 지난 미팅하고 텀이 길어졌기 때문에 천천히 처음부터 다같이 풀이하고 공유하는 시간을 가졌다.
이후에는 장고를 공부하고 있는 종혁과 현원이 각자 진행사항을 보여주며 현재 겪고 있는 문제를 알려주었다.

짚고 넘어갈 문제 몇 개만 공유하면,

https://school.programmers.co.kr/learn/courses/30/lessons/12909 (올바른 괄호)
자료구조 수업 시간에 스택을 배우면서 예제로 한 번씩은 접했을 전형적인 문제였다.

#include <iostream>
#include <string>
#include <stack>
#include <vector>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    stack<char> STK;
    
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == '(')
            STK.push('(');
        else
        {
            if(!STK.empty() && STK.top() == '(')
                STK.pop();
            else
                STK.push(')');  
        }
    }
    if(STK.empty()) return true;
    else return false;
}

https://school.programmers.co.kr/learn/courses/30/lessons/42587 (프로세스)
큐를 활용하는 문제로, 우선순위가 있는 데이터이지만 우선순위 큐로 동작하지는 않는다는 점을 감안해서 작성한다. C++의 경우 queue 컨테이너를 도입하는 풀이도 있고, vector만 사용하는 풀이도 있었다.

#include <algorithm>
#include <string>
#include <vector>

using namespace std;

int solution(vector<int> priorities, int location){
	int answer = 0;
    int max = *max_element(priorities.begin(), priorities.end());
    while(true){
    	for(int i=0; i<priorities.size(); i++){
        	if(prioirties[i]==max){
            	answer++;
                if(i==location) return answer;
                priorities[i]=0;
            	*max_element(priorities.begin(), priorities.end());
            }
        }
    }
}

위 풀이가 인상깊었던 것은, algorithm의 max_element를 사용해서 정렬하거나 별도 처리 없이 바로 우선순위가 제일 높은 값을 도출할 수 있다는 것이었다. 이와 같이 언어마다 지원하는 함수들이 무엇이 있는지 알면, 도움이 될 것 같기 때문에 공부해 봐도 좋을 것 같다.

profile
in verbs, not nouns

1개의 댓글

comment-user-thumbnail
2023년 8월 18일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기