Codeup 1093 review

calis_ws·2023년 5월 6일
0
post-custom-banner

코드업 기초 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]);
        }
    }
}

<index에 += 1을 할 수 있는지 묻는 문제>

  1. 출석번호 23개+1만큼 크기의 배열을 선언한다.

    int[] answer = new int[23 + 1];

    배열 크기를 23으로 설정할 경우 0~22번의 배열이 선언되므로 +1을 해서 0~23번의 배열이 선언되도록 한다.

  2. 출석번호가 총 n번 입력 되므로 n번만큼 정수가 입력될 수 있도록 for문을 선언 해준다.

    for (int i = 0; i < n; i++)
  1. 불린 번호의 횟수를 기록하기 위해서 해당 번호의 배열 값을 1씩 증가시켜준다.

    answer[sc.nextInt()]++;
  1. 배열의 값을 1번부터 23번까지 출력한다.
    for (int j = 1; j < 24; j++) {
    	System.out.printf("%d ", answer[j]);
    }

출처 : 멋사 5기 백엔드 위키 15팀 1&&Only

혼자 짤 자신이 없어서 정답 코드를 보고도 로직이 이해가 안됐는데 15팀 위키의 상세한 설명으로 이해하는데 큰 도움을 얻었다 너무 감사하다.

profile
반갑습니다람지
post-custom-banner

0개의 댓글