디케이
JAVA(자바)CodeUp(코드업): 1283 : 주식 투자, BigDecimal 사용 본문
gbs라는 개미 투자자가 주식에 투자하려고 합니다.
이 사람이 투자한 돈의 액수와, 그 주식의 하루간의 변동을 퍼센트로 알 때, 이 사람의 순수익과 이득/손해 판단을 출력하세요.
입력
첫째줄에 투자한 액수 a가 입력됩니다. (100 <= a <= 10,000)
둘째 줄에 투자 일 수 b가 입력됩니다.(1 <= b <= 10)
그 다음줄에 일별 변동폭인 데이터가 날짜 갯수(b개)만큼 퍼센트 정수로 입력됩니다. (변동폭는 음수도 될 수 있습니다.) ( 범위 -100 ~ +100)
출력
이 사람의 순수익(=총 수익(최종 값) - 총 비용(투자한 액수))을 소수점 첫째 자리에서 반올림하여 첫째 줄에 출력한다.
그리고 다음 줄에 이 사람이 이득일 경우 "good", 본전일 경우 "same", 손해일 경우 "bad"를 출력하세요.
물론, 단위가 '원'인데, 0.4원 손해나 0.4원 이득은 없겠죠? (0.5원이면 반올림해서 1입니다 ^^)
만약 0.5>순수익>-0.5이면 순수익은 0으로 봅니다.
입력 예시 예시 복사
10000 4 10 -10 5 -5
출력 예시
-125 bad
도움말
우선 첫날 10000원을 투자했습니다.
그리고 4일동안 기다렸습니다.
첫 날엔 10%가 올랐습니다. //11000원
둘째 날엔 10%가 내렸습니다. //9900원
셋째 날엔 5%가 올랐습니다. //10395원
넷째 날엔 5%가 내렸습니다. //9875.25원
첫 날 투자한 돈이 10000원인데, 9875.25원 남았으니 -124.75, 반올림해서 -125원. 즉, 손해입니다.
P.S. 반올림을 %.0f를 이용해서 했습니다.
package test;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a = sc.nextInt();
int b = sc.nextInt();
double[] c = new double[b];
BigDecimal income = new BigDecimal(a);
int netGain = 0;
for (int i = 0; i < b; i++) {
c[i] = sc.nextInt();
}
for (int i = 0; i < b; i++) {
income = income.add(income.multiply(BigDecimal.valueOf(c[i] * 0.01)));
}
netGain = (int) ((Math.round(income.doubleValue())) - a);
String result = (netGain > 0) ? "good" : (netGain < 0) ? "bad" : "same";
System.out.printf("%s\n%s", netGain, result);
}
}
'Java' 카테고리의 다른 글
[java] 날짜 더하기 Canlendar 클래스 getInstance() 메소드 사용 (0) | 2021.01.30 |
---|---|
[java] 시간, 날짜 포맷 자연스럽게 출력하는 방법 (0) | 2021.01.30 |
[JAVA]BigDecimal to int 형 변환 (0) | 2021.01.09 |
[Java] BigDecimal 사용법, 실수 계산 오류 수정 (0) | 2021.01.09 |
[Java] 자바 소수점 n번째 자리까지 반올림하기 (1) | 2021.01.09 |