Coding Problem/프로그래머스

[프로그래머스/LV1] - 체육복

마탁이 2021. 4. 24. 20:00

programmers.co.kr/learn/courses/30/lessons/42862

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

  • 완전 탐색으로 진행한다
  • 언제나 자기 자신부터 챙기자.

  • for() 연산 이용
더보기
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer = 0;

    vector<int>::iterator lostIter = lost.begin();
    for (; lostIter != lost.end(); )
    {
        const int value = *lostIter;

        vector<int>::iterator sameIter = std::find(reserve.begin(), reserve.end(), value);
        if (reserve.end() != sameIter)
        {
            // 자신꺼 도난당함
            lostIter = lost.erase(lostIter);
            reserve.erase(sameIter);
        }
        else
            ++lostIter;
    }

    lostIter = lost.begin();
    for (; lostIter != lost.end(); )
    {
        const int value = *lostIter;

        vector<int>::iterator plusIter = std::find(reserve.begin(), reserve.end(), value + 1);
        vector<int>::iterator minusIter = std::find(reserve.begin(), reserve.end(), value - 1);

        if (reserve.end() != plusIter)
        {
            lostIter = lost.erase(lostIter);
            reserve.erase(plusIter);
        }
        else if (reserve.end() != minusIter)
        {
            lostIter = lost.erase(lostIter);
            reserve.erase(minusIter);
        }
        else
            ++lostIter;
    }

    answer = n - lost.size();

    return answer;
}

int main()
{
    int n = 3;
    vector<int> lost = { 1,2 };
    vector<int> reserve = { 1,2 };

    int answer = solution(n, lost, reserve);
    printf("ans: %d\n", answer);

    return 0;
}
  • %를 이용한 연산
더보기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

char* solution(int a, int b) {
    // 리턴할 값은 메모리를 동적 할당해주세요.
    char* answer = (char*)malloc(4);

    const char* list[] = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED", };
    const int dayOfMonthLimit[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    int dayCount = 0;
    for (int idx = 0; idx < a - 1; idx++)
    {
        dayCount += dayOfMonthLimit[idx];
    }
    dayCount += b;
   
    strcpy(answer, list[dayCount % 7]);

    return answer;
}

int main()
{
    int a = 1;
    int b = 1;
    char* answer = solution(a, b);

    printf("%s\n", answer);

    return 0;
}