https://www.acmicpc.net/problem/20546
풀이
flag 변수를 두어 가격이 전일 대비 하락/상승한 연속 일자를 기록할 수 있도록 하였다
제출 코드
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int j[2] = {};
int s[2] = {};
int cash;
cin >> cash;
j[0] = cash;
s[0] = cash;
int flag = 0;
int prev;
int stock;
for (int i = 0; i < 13; i++)
{
cin >> stock;
j[1] += j[0] / stock;
j[0] = j[0] % stock;
if (i == 0 || prev == stock)
{
flag = 0;
continue;
}
if (prev < stock) flag = (flag > 0) ? flag + 1 : 1;
if (prev > stock) flag = (flag < 0) ? flag - 1 : -1;
prev = stock;
if (flag < -2)
{
s[1] += s[0] / stock;
s[0] = s[1] % stock;
}
else if (flag > 2)
{
s[0] += s[1] * stock;
s[1] = 0;
}
}
cin >> stock;
j[0] += j[1] * stock;
s[0] += s[1] * stock;
cout << ((j[0] == s[0]) ? "SAMESAME" : (j[0] > s[0]) ? "BNP" : "TIMING");
}
flag 변수의 경우
1. 전일 가격 대비 오늘 가격이 같으면 0으로 초기화
2. 전일 대비 상승했는데 flag가 0보다 크다면(연속으로 상승 추이란 의미) flag + 1을 해주고, 아니라면 1으로 지정해준다
3. 전일 대비 하락한 경우도 마찬가지로 동작하도록 작성했다
그리고 준현과 성민의 매매에 관해서는 문제 본문을 그대로 옮겼다
성민의 거래에서 flag < -2의 의미는 3일 연속으로 하락장이란 의미이고(오늘은 그 3일째)
flag > 2의 의미는 3일 연속으로 상승장이라는 의미이다
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 9017] 크로스 컨트리 (0) | 2025.01.17 |
---|---|
[C++][백준 10709] 기상캐스터 (0) | 2025.01.16 |
[C++][백준 9935] 문자열 폭발 (0) | 2025.01.16 |
[C++][백준 20437] 문자열 게임 2 (0) | 2025.01.14 |
[C++][백준 1522] 문자열 교환 (0) | 2025.01.13 |