문제
정답 코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int A,B,C;
cin >> A >> B>> C;
int come[3];
int out[3];
for (int i = 0; i < 3; i++)
{
cin >> come[i] >> out[i];}
sort (come, come+3);
sort(out, out+3);
int level = 0;
int cost = 0;
for (int i=0; i < out[2];i++)
{
for (int j = 0; j < 3; j++)
{
if (come[j] == i)
level++;
if (out[j] == i)
level--;
}
if (level == 1)
cost +=(level *A);
else if (level == 2)
cost += (level * B);
else if (level == 3)
cost += (level *C);
}
cout << cost <<"\n";
}
문제 풀이의 흐름
- 문제를 재해석해서 들어올 때마다 갯수를 증가시키고 나갈때마다 갯수를 줄인다.
- 각 갯수에 맞는 값을 곱해서 한대일 때 2대일때 3대일 때 0대일때 각각의 1씩 시간을 보면서 비용을 계산했다.
주의 할 점
overflow나 시간 초과에 대한 걱정이 조금 있었지만 난이도가 낮은 문제라 딱히 문제가 없었다.
반성 및 고찰
컴파일 에러가 자꾸 떠서 뭐가 문제인지 몰랐는데 sort함수를 쓰는데 algorithm헤더를 추가하지 않아서 자꾸 문제가 발생했었다.
놀랍게도 헤더를 추가하지 않았어도 컴파일이 내 맥에서는 작동을 했었다. 앞으로 사용한 함수를 쓸 때마다 헤더를 먼저 추가했는지 확인해야겠다.
Uploaded by
N2T728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 1159번 농구경기 (C++) (0) | 2022.12.30 |
---|---|
백준 10988번 팰린드롬인지 확인하기(C++) (0) | 2022.12.29 |
백준10808번 알파벳 개수(C++) (0) | 2022.12.29 |
백준 2309번 일곱 난쟁이(C++) (0) | 2022.12.29 |
read 함수 (0) | 2022.12.22 |