[20546] 기적의 매매법

import java.util.Scanner;
/*
	구현해야할 기능
	1. 준현은 현재 자금으로 주식을 살 수 있다면 최대로 구매
	2. 성민은 3일 연속 하락일 경우에 풀매수, 3일 연속 상승일 경우 풀매도
	3. 마지막날 각각 가진 주식을 모두 팔고 비교
 
 */
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String answer="";
		
		//준현 성민의 현금, 주식 수, 성민의 기능을 만들기 위한 연속 횟수, 연속 횟수를 판단하기 위한 전 날짜 가격, 현재 가격
		int hyeonCash, minCash, hyeonStock=0, minStock=0, continuity=0, beforePrice=0, price=0;
		
		//준현 성민의 자금 첫번째 줄에서 가져옴
		minCash = hyeonCash =sc.nextInt();
		
		//날짜 별 계산 시작
		for(int i=0; i<14; i++) {
			
			//오늘의 가격을 받아옴
			price = sc.nextInt();
			
			//1번 기능 
			//만약 현재 가격이 준현의 자금과 작거나 같을 경우 
			if(price<=hyeonCash) {
				
				//살 수 있는 최대로 구매
				hyeonStock = hyeonCash/price;
				
				//주식을 사고 남은 자금 업데이트
				hyeonCash = hyeonCash%price;
			}
			//1번 기능 종료
			
			//2번 기능 시작
			//전날 가격이 0원인 경우(첫날) 오늘 가격을 넣고 다음 날로 넘어감
			if(beforePrice==0) beforePrice=price;
			
			//0원이 아닐때 전날과 오늘날 가격이 같은 경우 연속횟수를 0으로 바꾸고 다음 날로 넘어감
			else if(beforePrice == price) continuity=0;
			
			//둘 다 아닐때 전날 가격이 오늘날 가격보다 낮은 경우 (상승)
			else if(beforePrice<price) {
				
				//연속된 날짜가 0 이상이라면 카운트 증가
				if(continuity>=0) continuity++;
				
				//만약 음수였다면 연속 횟수를 1로 변경
				else continuity = 1;
				
				//만약 상승 횟수가 3이상이라면 풀매도
				if(continuity>2) {
					minCash = price*minStock + minCash;
					minStock = 0;
				}
			
			//셋 다 아닐 때 (하락)
			}else {
				
				//연속된 날짜가 0이하라면 카운트 다운
				if(continuity<=0) continuity--;
				
				//아니라면 -1로 변경
				else continuity = -1;
				
				//3일 이상 하락이라면 풀매수
				if(continuity<-2) {
					minStock = minStock + minCash/price;
					minCash = minCash%price;
				}
			}

			beforePrice=price;
			//2번 기능 종료
			
		}//날짜별 계산 종료
		
		//3번 기능 시작
		hyeonCash += hyeonStock*price;
		minCash += minStock*price;
		
		if(minCash==hyeonCash) answer ="SAMESAME";
		else if(minCash<hyeonCash) answer ="BNP";
		else answer ="TIMING";
		
		System.out.println(answer);
		//3번 기능 종료
		
		
		sc.close();
	}

}

좋은 웹페이지 즐겨찾기