[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();
}
}
Author And Source
이 문제에 관하여([20546] 기적의 매매법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@away0419/20546-기적의-매매법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)