오산마 study day 8

DaewoongJeon·2021년 3월 14일

OSanMa Algorithm Study

목록 보기
8/10
  • 날짜 : 2021. 3.10.(수)

1. 목표

A. 프로그래머스 코테 문제 2단계 6문제 풀기

2. 프로그래머스 코테 문제 2단계 6문제

  • 푼 문제 list
  1. 프린터
  2. 124 나라의 숫자
  3. 문자열 압축
  4. 카카오프렌즈 컬러링북
  5. 가장 큰 수
  6. 괄호 변환

A. 프린터

#include <string>
#include <vector>

using namespace std;

int check(int int_tmp, vector<int> priorities)
{
    for (int i = 0; i < priorities.size(); i++)
    {
        if (priorities[i] > int_tmp)
            return (0);
    }
    return (1);
}

int solution(vector<int> priorities, int location) {
    int answer = 0;
    vector<int> print;
    int i = 0;
    int int_tmp = location;
    int tmp;
    while (1)
    {
        if (check(priorities[0], priorities) == 1)
        {
            if (int_tmp == 0)
                break;
            print.push_back(priorities[0]);
            priorities.erase(priorities.begin());
        }
        else
        {
            if (int_tmp == 0)
                int_tmp = priorities.size();
            tmp = priorities[0];
            priorities.push_back(tmp);
            priorities.erase(priorities.begin());
        }
        int_tmp--;
    }
    answer = print.size() + 1;
    return answer;
}
  • 코드 설명
  1. 매개변수로 입력된 int보다 큰 값이 입력된 int형 vector 안에 있는지 확인하는 함수 check를 임의로 선언한다.
  2. 무한으로 돌아가는 while문안에서 priorities vector안에 정렬된 목록이 우선순위대로 프린트 될 수 있도록 해야 한다.
  3. priorities vector 안에 우선순위가 더 큰 값이 없고 그에 해당하는 인덱스가 location으로 입력된 인덱스일 경우, while문을 빠져나와서 출력물 목록인 print의 size에 1만큼 더한 값을 answer로 return 한다.
  4. 그에 해당하는 인덱스가 location이 아닐 경우, print vector에 해당하는 값을 push_back 하고 priorities 목록에서 제외시킨다.
  5. priorities vector 안에 우선순위가 더 큰 값이 있고 그에 해당하는 인덱스가 location으로 입력된 인덱스일 경우, int_tmp를 priorities의 크기로 새로 갱신해준다. 그리고 그에 해당하는 값을 priorities vector의 뒤로 넣어준다.

B. 124 나라의 숫자

C. 문자열 압축

D. 카카오프렌즈 컬러링북

E. 가장 큰 수

F. 괄호 변환

0개의 댓글