Notice
Recent Posts
Recent Comments
Link
마이의 개발 블로그
[구름LEVEL] 해외 주식 투자 (Java) 본문
반응형
구름LEVEL
난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.
level.goorm.io
접근 방식
1) 주어진 주식 종목의 평가 금액을 산출한 후에 2) 평가 금액이 높은 순, 주식 번호가 낮은 순으로 판매할 주식의 번호를 순서대로 출력해야하는 문제이다. 주식 번호는 주식이 제시되는 순서와 동일하다.
로직 설명
- n에 주식 개수 저장
- 가격, 주식번호 저장용 배열 double[n][2] 선언
- n만큼 반복하며: 한 줄씩 읽어 가격(price)과 주식번호(i + 1)를 저장
- Arrays.sort() 메서드에 Comparator를 재정의하여 주식 가격 기준 내림차순, 주식 번호 기준 오름차순 정렬
- 정렬된 배열을 탐색하며: 순차적으로 번호와 공백 StringBuffer에 쓰기
- 마지막 공백 제거(trim()) 후 StringBuffer 출력
작성 코드
import java.io.*;
import java.util.stream.Stream;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
double[][] arr = new double[n][2];
for(int i = 0; i < n; i++){
double[] stock = Stream.of(br.readLine().split(" ")).mapToDouble(Double::parseDouble).toArray();
double price = Math.floor(stock[0] * stock[1] * 10) /10.0;
arr[i][0] = price;
arr[i][1] = i + 1;
}
Arrays.sort(arr, new Comparator<double[]>(){
public int compare(double[] stock1, double[] stock2){
if(stock1[0] == stock2[0]){
return (int)(stock1[1] - stock2[1]);
}else{
return (int)((stock2[0] - stock1[0]) * 100);
}
}
});
StringBuffer sb = new StringBuffer();
for(double[] stock : arr){
sb.append((int)stock[1] + " ");
}
System.out.print(sb.toString().trim());
}
}
반응형
'코딩테스트 > 구름LEVEL' 카테고리의 다른 글
[구름LEVEL] 방 탈출하기 (Java) (0) | 2023.09.18 |
---|---|
[구름LEVEL] 개미 집합의 지름 (Java) (0) | 2023.09.09 |
Comments