728x90
반응형
https://www.acmicpc.net/problem/10989
일단 이 문제는 배열로 풀 수도 있고, 해시맵으로도 풀 수 있다.
근데 진짜.. 배열로 풀었을 때 시간초과나서.. 뭐지 하고 해시맵으로 썼는데 해시맵도 시간초과나서..
깨달은 것... 내가 마지막에 일일이 System.out.println(i); 를 해주었었다... 하..... 바본가...
시간초과난다면,, 내가 혹시 StringBuilder를 쓰지 않고 일일이 프린팅한건 아닌지 체크하길 바란다...
매번 프린트 하기보단, StringBuilder에 보관한 후에 한번에 프린트하는게 훠어어어얼씬 빠르다...
5번의 시간초과 에러를 만난 후에 깨달았음^^,,,ㅗ
1. 배열로 푼 Ver
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int [] num = new int[10001];
int max = -1;
int tmp;
for(int i=0;i<N;i++){
tmp = Integer.parseInt(br.readLine());
num[tmp]++;
if(tmp > max)
max = tmp;
}
for(int i=0;i<=max;i++){
if(num[i]!=0){
for(int j=0;j<num[i];j++)
sb.append(i+"\n");
}
}
System.out.println(sb);
}
}
2. 해시맵으로 푼 Ver (사실 해시맵보다 리스트가 더 빠름ㅋㅋ 그냥 해시맵 자꾸 시간초과나서 오기로 푼거임)
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int tmp;
for(int i=0;i<N;i++){
tmp = Integer.parseInt(br.readLine());
map.put(tmp, map.getOrDefault(tmp,0)+1);
}
TreeMap<Integer,Integer> tm = new TreeMap<Integer,Integer>(map);
Iterator<Integer> keys = tm.keySet().iterator();
while(keys.hasNext()){
int key = keys.next();
sb.append((key+"\n").repeat(map.get(key)));
//repeat는 문자열을 반복해주는 함수로 자바11 문법!
}
System.out.println(sb);
}
}
이 문제를 푼 후에 다른 사람들 풀이를 보다가 발견한 것!
java11부터는 repeat라는 메서드가 있다!
String 메서드이고, 문자열.repeat(반복횟수)로 사용하면 된다~! 오 개꿀
일일이 for문 쓸 필요없네 ㅎㅎ
1번 코드에서 sb.append부분 이중 for문으로 구현했는데, 2번 코드처럼 repeat로 바꿀 수 있다~!
728x90
반응형
'알고리즘 (for 코딩테스트) > 백준_자바 (Java)' 카테고리의 다른 글
[Java 자바] 백준 알고리즘 2869번 답 : 달팽이는 올라가고 싶다 (0) | 2021.09.01 |
---|---|
자바 실행시간 줄이는 Tip | 자바 백준 시간초과 시 해볼만한 시도 | 자바 초보자 (0) | 2021.09.01 |
자바 2차원 배열 정렬하기 | Java 2차원 배열 정렬하기 (0) | 2021.08.29 |
소수 판별 3가지 방법 | 에라토스테네스의 체 | 자바 | Java (0) | 2021.08.27 |
[Java 자바] 백준 알고리즘 1929번 답 : 소수 구하기 (0) | 2021.08.27 |
최근댓글