알고리즘
백준 5648 역원소 정렬
킨글
2024. 7. 30. 22:55
설명
1. 먼저, 첫줄에 얼마나 문자가 있을지 문제에서 나와있지 않아서 st.countTokens()를 통해서 갯수를 구함.
2. 첫줄만큼 for문을 돈다.
3. for문을 돌면서 입력 받은 문자를 reverse()해서 바로 list에 넣는다.
3. 두번째 줄부터 while문을 통해서 n이 충족될 때까지 입력 받고, reverse()해서 바로 list에 넣는다.
4. list를 정렬해서 출력한다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
// 5648
public static void main(String[] args) throws IOException {
process();
}
private static void process() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = -1;
int loopCnt = 0;
List<Long> list = new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int startIdx = st.countTokens();
// 첫줄에 입력 받을 때에 얼마나 원소가 있을지 몰라서 st.countTokens() 만큼 돌음
for (int i = 0; i < startIdx; i++) {
if(i == 0) {
n = Integer.parseInt(st.nextToken());
} else {
String reverse = new StringBuilder(st.nextToken()).reverse().toString();
list.add(Long.parseLong(reverse));
loopCnt++;
}
}
// 이후에 n이 충족될 때까지 계속해서 입력 받음
while (loopCnt != n) {
st = new StringTokenizer(br.readLine());
while (st.hasMoreElements()) {
String reverse = new StringBuilder(st.nextToken()).reverse().toString();
list.add(Long.parseLong(reverse));
loopCnt++;
}
}
// 정렬 후 출력
Collections.sort(list);
for (Long item : list) {
bw.write(item + "\n");
}
bw.flush();
bw.close();
br.close();
}
}