반응형
안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1094 : [기초-1차원배열] 이상한 출석 번호 부르기2 (자바, JAVA)입니다.
intro
Question
문제 설명
입력
번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.
출력
1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
예시
- 입력 :
10
10 4 2 3 6 6 7 9 8 5 - 출력 :
5 8 9 7 6 6 3 2 4 10
Solution (풀이)
- 풀이 1 : 메모리 33404, 시간 379
public class Answer1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a = new int[sc.nextInt()]; // 총 출석을 부를 숫자만큼 배열 길이 선언
for (int i=0; i<a.length; i++) {
a[i] = sc.nextInt(); // 순차적으로 출석 부른 숫자를 배열에 저장
}
for(int i=a.length-1; i>=0; i--) { // 배열 마지막 index부터 거꾸로
System.out.print(a[i] + " "); // 각 index별 총 불린 횟수 출력
}
sc.close();
}
}
- 풀이 2 : 메모리 13528, 시간 96
public class Answer2 {
// 출석을 부른 번호 순서를 바꾸어 공백을 두고 출력한다.
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 총 출석을 부를 숫자만큼 배열 길이 선언
int[] a = new int[Integer.parseInt(br.readLine())];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i=a.length-1; i>=0; i--) {
a[i] = Integer.parseInt(st.nextToken()); // idx마지막부터 출석 부른 숫자를 배열에 저장
}
for (int i : a) { // 향상 for문
sb.append(i).append(" ");
}
System.out.print(sb);
}
}
이젠 사용자로부터 여러 데이터를 입력받을 때에 Scanner
보다 BufferedReader
을 사용하는 것이 훨신 더 성능이 좋다는 것은 알았다고 생각한다.
- 그렇다면 여러 데이터를 출력할때는?
매번System.out.print()
,System.out.println()
메소드를 통하여 출력하는 것 보다는, StringBuilder나 BufferedWritrer, Stringbuffer 를 사용하여 출력하고자 하는 데이터를 하나의 변수에 저장을 하고 마지막에 한번에 출력하는 것이 성능에 도움이 된다.
반응형
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp_Java] Q1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기 (0) | 2022.04.27 |
---|---|
[CodeUp_Java] Q1095 : [기초-종합] 이상한 출석 번호 부르기3 (0) | 2022.04.27 |
[CodeUp_Java] Q1093 : [기초-종합] 이상한 출석 번호 부르기1 (0) | 2022.04.18 |
[CodeUp_Java] Q1092 : [기초-종합] 함께 문제 푸는 날 (0) | 2022.04.18 |
[CodeUp_Java] Q1091 : [기초-종합] 수 나열하기 3 (0) | 2022.02.24 |