반응형
안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1093 : [기초-1차원배열] 이상한 출석 번호 부르기1 (자바, JAVA)입니다.
intro
Question
문제 설명
입력
첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
출력
1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
예시
- 입력 :
10
1 3 2 2 5 6 7 4 5 9 - 출력 :
1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Solution (풀이)
- 풀이 1 : 메모리 29924, 시간 218
public class Answer1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 총 부를 횟수
int[] a = new int[24]; // 각 번호(1~23) 총 24명의 숫자만큼 배열 길이 선언
for (int i = 0; i < n; i++) {
int t = sc.nextInt(); // 어떤 번호를 불렀는지.
a[t] += 1; // 불린 번호의 index 값에 1 추가 하기
}
for(int i = 1; i <= 23; i ++) {
System.out.print(a[i] + " "); // 각 index별 총 불린 횟수 출력
}
sc.close();
}
}
- 풀이 2 : 메모리 12928, 시간 85
public class Answer2 {
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()); // 총 부를 횟수
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
int[] studentNo = new int[24]; // 각 번호(1~23) 총 24명의 숫자만큼 배열 길이 선언
for (int i=0; i<n; i++) {
studentNo[Integer.parseInt(st.nextToken())] += 1; // 불린 번호의 index에 1 추가 하기
}
for (int i=1; i< studentNo.length; i++) {
sb.append(studentNo[i]).append(" "); // 각 index별 총 불린 횟수 출력
}
System.out.println(sb);
}
}
지난 포스팅과 내용과 동일하게, 여러 데이터를 입력받을 때에는 Scanner
보다 BufferedReader
을 사용하는 것이 훨신 더 성능이 좋았습니다.
(심지어 숫자형으로 입력 받아야해서 매번 캐스팅을 해주더라도 성능이 좋았습니다.)
반응형
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp_Java] Q1095 : [기초-종합] 이상한 출석 번호 부르기3 (0) | 2022.04.27 |
---|---|
[CodeUp_Java] Q1094 : [기초-종합] 이상한 출석 번호 부르기2 (0) | 2022.04.18 |
[CodeUp_Java] Q1092 : [기초-종합] 함께 문제 푸는 날 (0) | 2022.04.18 |
[CodeUp_Java] Q1091 : [기초-종합] 수 나열하기 3 (0) | 2022.02.24 |
[CodeUp_Java] Q1090 : [기초-종합] 수 나열하기 2 (0) | 2022.02.24 |