코딩테스트

[20546] 기적의 매매법

Patti Smith 2024. 1. 31.
 

20546번: 🐜 기적의 매매법 🐜

1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다.

www.acmicpc.net

 

주어진 조건 그대로 코드를 구현하면 된다.

구현은 조건이 세세해서 하나라도 빠지면 틀리기 때문에 주의해서 풀어야 한다.

#include <iostream>

using namespace std;

int main()
{
    int cash;
    int stock[14];
    
    cin >> cash;
    
    for(int i = 0; i < 14; i++)
        cin >> stock[i];
        
    int BNPCash = cash;
    int BNP = 0;
    
    for(int i = 0; i < 14; i++){
        if(BNPCash >= stock[i]){ // 주식을 살 수 있음
            BNP = BNPCash / stock[i];
            BNPCash %= stock[i];
        }
    }
    
    int TIMINGCash = cash;
    int TIMING = 0;
    
    int BuyAll = 0;
    int SellAll = 0;
    int postCash = 0;
    for(int i = 0; i < 14; i++){
        if(postCash < stock[i]){ 
            // 전날 대비 상승
            BuyAll++;
            SellAll = 0;
        } else if(postCash > stock[i]){
            //전날 대비 하락
            BuyAll = 0;
            SellAll++;
        } else{
            BuyAll = 0;
            SellAll = 0;
        }
        
        if(SellAll >= 3){
            // 전량 매수
            if(TIMINGCash >= stock[i]){ // 돈이 있다면
                TIMING += (TIMINGCash / stock[i]);
                TIMINGCash %= stock[i];
            }
            
        }
        if(BuyAll >= 3){
            // 전량 매도
             
            TIMINGCash += (TIMING * stock[i]);
            TIMING = 0;
            
        }
        
        postCash = stock[i];
    }
    
    // 비교
    int resultBNP = BNPCash + BNP * stock[13];
    int resultTIMING = TIMINGCash + TIMING * stock[13];
    
    cout << resultBNP << endl;
    cout << resultTIMING << endl;
    
    if(resultBNP > resultTIMING) cout << "BNP";
    else cout << "TIMING";

    return 0;
}

'코딩테스트' 카테고리의 다른 글

특정 거리의 도시 찾기  (0) 2024.02.22
[5347] LCM  (0) 2024.02.20
[이코테] 뱀  (0) 2024.01.26
[이코테] 무지의 먹방 라이브  (0) 2024.01.24
[이코테] 볼링공 고르기  (0) 2024.01.23

댓글