프로그래머스 Lv.1 코딩테스트

[프로그래머스 Lv.1] 콜라 문제

하다블 2022. 11. 8. 18:16
반응형

문제는 다음과 같습니다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/132267?language=cpp 

 

프로그래머스

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

programmers.co.kr

 

풀이 코드는 다음과 같습니다.

 

#include <string>
#include <vector>
#include <cmath>
using namespace std;

int solution(int a, int b, int n) {
    int answer = 0;
    while(n>=a)
    {
        int temp=n%a;
        n=floor(n/a+0.5)*b;
        answer+=n;
        n+=temp;
    }
    return answer;
}

순서도를 간단하게 정리하면

1. 빈병의 개수, 받기위한 개수의 나머지를 구하고

2. 빈병을 주고 마트에서 주는 수를 계산하고

3. 이 과정을 반복한다.

 

C++에 반올림 하는 방법은 내림함수인 floor()를 통해 할 수 있습니다.

floor는 무조건 내리기 때문에 먼저 0.5를 더하면 소수점 뒤의 수가 5 이상이면 일의 자리가 달라지고 4이하이면 달라지지 않기 때문에 반올림을 할 수 있습니다.

그 외 구현은 순서를 생각해서 구현하면 풀 수 있는 문제라고 생각합니다.

반응형