코드
import java.util.*;
import java.io.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
PriorityQueue<Character> pq = new PriorityQueue<>();
PriorityQueue<String> stringspq = new PriorityQueue<>();
Vector<Character> v = new Vector<>();
Vector<String> stringsv = new Vector<>();
for(int i=0;i<strings.length;i++){
pq.add(strings[i].charAt(n));
stringspq.add(strings[i]);
}
//System.out.println(stringspq.peek());
for(int i=0;i<strings.length;i++){
v.add(pq.poll());
stringsv.add(stringspq.poll());
}
String s = new String();
for(int i=0;i<n+1;i++){
s+= "1";
}
//System.out.println(s);
answer = new String[strings.length];
//System.out.println(v.get(0));
for(int i=0;i<strings.length;i++){
for(int j=0;j<strings.length;j++){
if(v.get(i)==stringsv.get(j).charAt(n)){
answer[i] = stringsv.get(j);
stringsv.set(j, s);
break;
//stringsv.remove(stringsv.get(j));
//strings[j] = "123";
}
}
}
return answer;
}
}
일단 너무 불필요한 메모리를 추가해서 계속 사용한 것 같다 -> 주어지는 숫자가 커지면 시간 초과 가능성 높아짐
다른 사람 코드
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = {};
ArrayList<String> arr = new ArrayList<>();
for (int i = 0; i < strings.length; i++) {
arr.add("" + strings[i].charAt(n) + strings[i]);
}
Collections.sort(arr);
answer = new String[arr.size()];
for (int i = 0; i < arr.size(); i++) {
answer[i] = arr.get(i).substring(1, arr.get(i).length());
}
return answer;
}
}
훨씬 정리 잘되고 깔끔한 메모리 사용
문자열 앞에 인덱스에 해당되는 알파벳을 추가해서 정렬하는 방식
정렬 method
//배열 정렬
Arrays.sort(arr);
Arrays.sort(arr, Collections.reverseOrder()); //내림차순
//ArrayList 정렬
Collections.sort(list);
//정렬 후 내림차순으로
Collections.sort(list);
Collections.reverse(list);
오늘의 회고
- 문제를 푸는 것에 그치는 것이 아니고 풀고도 내 풀이의 부족한 점을 잘 파악해서 최적화할 수 있는 방법을 찾자...!
- 내일(4/7) 학습 예정 : 스프링부트 온라인 강의 끝내기
'algorithm > 문제 풀이' 카테고리의 다른 글
백준 1654번 (랜선 자르기) 자바 Java (0) | 2024.04.07 |
---|---|
백준 10974번 (모든 순열) 자바 Java (0) | 2024.04.06 |
99클럽 코테 스터디 4일차 TIL - 프로그래머스 문제 : 할인 행사 (1) | 2024.04.04 |
99클럽 코테 스터디 2일차 TIL - 백준 11279 (최대 힙) java (0) | 2024.04.02 |
백준 10989번 (수 정렬하기 3) Java 11 계수 정렬 (0) | 2021.02.08 |