Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프로그래머스
- docker
- HTTP
- 문자열
- 코딩테스트
- 구현
- 배열
- 구름LEVEL
- HashMap
- 스타트업
- bfs
- Linux
- 주니어
- 명령어
- 인텔리제이
- spring boot
- 스프링 부트
- 자료구조
- 해시맵
- Java
- 스프링부트
- spring
- 백엔드
- 스프링
- dfs
- 이직
- IntelliJ
- 도커
- 개발자
- 해결
Archives
- Today
- Total
마이의 개발 블로그
[구름LEVEL] 해외 주식 투자 (Java) 본문
반응형
접근 방식
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