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
- sonarqube
- On-Premise
- 완전탐색
- 자바
- 백엔드 개발
- 카카오엔터프라이즈
- jsonwebtoken
- objectstorage
- java
- DP
- 인가인증
- MESSAGEBROKER
- s3
- bfs
- dockercompose
- 코드트리
- es_java_home
- CODETREE
- 동전 퍼즐
- 카카오클라우드
- 구름
- softeer
- 소프티어
- 함수 종속성
- db
- bitmask
- 알고리즘
- DFS
- 정렬
- BFS
Archives
- Today
- Total
wooing
[Softeer/문자열] GPT식 숫자 비교 본문
문제
https://softeer.ai/practice/11001
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
해결방법
이 문제를 해결하기 위한 포인트는 배열 정렬하는 Comparator구현이다. 입력받은 값을 String[]로 저장하고, Arrays.sort메소드와 Comparator람다 함수를 직접 정의하여 쉽게 해결 가능하다.
Comparator람다 함수 내부에는 다음과 같은 과정을 구현하면 된다.
- 소수점 기준으로 좌우 숫자 분리
- 좌측 숫자 비교
- 우측 숫자 유무 확인
- 우측 숫자 비교
이때 소수점 좌우 분리 과정에서 .split("")메소드 안의 정규식에 주의해야한다. 정규식에서 "."은 모든값을 의미하기때문에 원하는 결과를 얻을 수 없다. "."대신 "\\."으로 입력하여야한다.
소스코드
더보기
import java.io.*;
import java.util.*;
public class Main {
static int N;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
String[] arr = new String[N];
for(int i =0; i < N; i++){
arr[i] = br.readLine();
}
Arrays.sort(arr, (a, b) -> {
String[] aList = a.split("\\.");
String[] bList = b.split("\\.");
int aLeft = Integer.parseInt(aList[0]);
int bLeft = Integer.parseInt(bList[0]);
int leftResult = aLeft - bLeft;
if(leftResult != 0)
return leftResult;
int aSize = aList.length;
int bSize = bList.length;
int sizeResult = aSize - bSize;
if(aSize < 2 || bSize < 2)
return sizeResult;
return Integer.parseInt(aList[1]) - Integer.parseInt(bList[1]);
});
StringBuilder builder = new StringBuilder();
for(String s : arr){
builder.append(s + "\n");
}
System.out.print(builder.toString());
}
}
'알고리즘' 카테고리의 다른 글
[Softeer/DP, DFS] 효도 여행 (0) | 2025.02.07 |
---|---|
[Softeer/DP] 징검다리 (2) | 2025.02.04 |
[Softeer/비트마스크] CPTI (0) | 2025.02.03 |
[코드트리/완전탐색] 금 채굴하기 (1) | 2025.01.21 |
[코드트리/완전탐색] 트로미노 (0) | 2025.01.21 |