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
- Dijkstra Algorithm
- 뮤텍스란?
- 세마포어란?
- 다익스트라
- 세마포어
- 다익스트라 알고리즘
- 싸피 합격
- 호스팅
- 세마포어와 뮤텍스의 차이
- Synchronization
- 뮤텍스
- Proxy Server
- Proxy
- 싸피 면접 후기
- floyd-warshall
- 플로이드 와샬
- 클라우드 서버
- 호스팅이란?
- 삼성 청년 SW 아카데미
- 동기화
- 최단 경로
- 프록시
- 플로이드 워셜
- 웹 호스팅
- SSAFY
- 서버 호스팅
- 싸피
- 프록시서버
- 세마포어와 뮤텍스
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[프로그래머스][Level2][Java] 파일명정렬 본문
programmers.co.kr/learn/courses/30/lessons/17686
문제풀이
HEAD와 NUMBER의 구분은 숫자가 등장하냐 안 하냐 이기때문에 숫자가 등장하기 전까지 HEAD를 찾는다.
NUMBER또한 숫자말고 다른 문자가 나올때까지 반복하여 찾아준다.
TAIL 같은 경우는 해당 문제에서 필요가 없기때문에 따로 확인하지 않았다.
HEAD와 NUMBER를 다 찾으면 list에 저장해주며 files의 길이만큼 반복하였다.
이제 파일명 정렬을 compareTo 함수로 조건에 맞게 설정하여 Collection.sort() 하였다.
이제 차례대로 꺼내면서 answer 배열에 저장해주고 return 해주면 된다.
코드
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public String[] solution(String[] files) {
String[] answer = new String[files.length];
List<Data> list = new ArrayList<>();
//전체 반복
for(int i=0; i<files.length; i++) {
String copy = files[i].toUpperCase();
int index =0;
//HEAD 찾기
String head ="";
while(true){
if(index == copy.length()) break;
if('A'<= copy.charAt(index) && copy.charAt(index) <='Z' || copy.charAt(index) == ' ' || copy.charAt(index) == '-') head+= copy.charAt(index++);
else break;
}
//Number 찾기
String number ="";
while(true){
if(index == copy.length()) break;
if('0'<= copy.charAt(index) && copy.charAt(index) <='9') number+= copy.charAt(index++);
else break;
}
list.add(new Data(head, Integer.parseInt(number), files[i]));
}
Collections.sort(list);
for(int i=0; i<files.length; i++) {
answer[i] = list.get(i).fileName;
System.out.println(answer[i]);
}
return answer;
}
static class Data implements Comparable<Data>{
String head;
int number;
String fileName;
public Data(String head, int number, String fileName) {
super();
this.head = head;
this.number = number;
this.fileName = fileName;
}
@Override
public int compareTo(Data o) {
if(this.head.equals(o.head)) return this.number - o.number;
return this.head.compareTo(o.head);
}
}
}
'알고리즘 > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스][Level2][Java] 전화번호 목록 (0) | 2020.12.23 |
---|---|
[프로그래머스][Level2][Java] 후보키 (0) | 2020.12.23 |
[프로그래머스][Level2][Java] n진수 게임 (0) | 2020.12.21 |
[프로그래머스][Level3][Java] 풍선 터트리기 (0) | 2020.12.18 |
[프로그래머스][Level2][Java] H-Index (0) | 2020.12.18 |
Comments