코드업 기초 100제를 쭉 풀어나가는 동안 소소한 성취감을 얻었지만 결국 1093번부터 벽을 마주하게 되었다.
https://www.codeup.kr/problem.php?id=1093
출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
입력
첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
출력
1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
import java.util.Scanner;
public class Codeup1093 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = 10;
int[] answer = new int[23 + 1];
for (int i = 0; i < size; i++) {
answer[sc.nextInt()]++; // 문제의 핵심
}
for (int i = 1; i < answer.length; i++) {
System.out.printf("%d ", answer[i]);
}
}
}
출석번호 23개+1만큼 크기의 배열을 선언한다.
int[] answer = new int[23 + 1];
배열 크기를 23으로 설정할 경우 0~22번의 배열이 선언되므로 +1을 해서 0~23번의 배열이 선언되도록 한다.
출석번호가 총 n번 입력 되므로 n번만큼 정수가 입력될 수 있도록 for문을 선언 해준다.
for (int i = 0; i < n; i++)
불린 번호의 횟수를 기록하기 위해서 해당 번호의 배열 값을 1씩 증가시켜준다.
answer[sc.nextInt()]++;
for (int j = 1; j < 24; j++) {
System.out.printf("%d ", answer[j]);
}
출처 : 멋사 5기 백엔드 위키 15팀 1&&Only
혼자 짤 자신이 없어서 정답 코드를 보고도 로직이 이해가 안됐는데 15팀 위키의 상세한 설명으로 이해하는데 큰 도움을 얻었다 너무 감사하다.