코딩테스트 & 문제 풀이
[C]코드업_1093 : [기초-1차원배열] 이상한 출석 번호 부르기1
Hicecream
2023. 4. 24. 00:37
2022년 7월 1일에 작성됨
https://www.codeup.kr/problem.php?id=1093
[기초-1차원배열] 이상한 출석 번호 부르기1(설명)
C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용
www.codeup.kr
문제 분석
1번 부터 23번 까지 출석 번호가 불린 횟수를 세는 프로그램.
✍️ 배열의 기본 개념
- 변수 이름 뒤에 [ ](대괄호)를 붙인 뒤 크기를 설정해준다. 그리고 배열을 선언 하면서 값을 초기화 할 때는 { }(중괄호)를 사용한다. ex) 자료형 배열이름[크기] = {값, 값, 값};
- int Arr[10]은 크기가 10인 int 형 배열을 선언한다는 뜻이다.
- 배열에 값이 저장된 공간을 '요소(element)'라고 한다. 배열에서 각 요소에 접근하려면 배열 뒤에 [ ]를 사용하며 [ ] 안에 각 요소의 '인덱스(index)'를 지정해주면 된다.
Arr\[0]; // 첫 번째 요소, 인덱스 0
Arr\[3]; // 네 번째 요소, 인덱스 3
Arr\[9]; // 열 번째 요소, 인덱스 9
주의> 배열의 인덱스는 항상 0부터 시작한다.
- 배열을 선언 할 때[ ]는 "이 변수가 배열이고 크기는 얼마다"라고 알려주는 역할이고, 배열을 사용 할 때[ ]는 "배열의 요소에 접근하겠다"는 뜻으로 생각하면 쉽다.
소스 코드 (⭕)
#include <stdio.h>
int main() {
int arr[24] = { 0, }; // 배열 모두 0으로 초기화
int num1, num2;
scanf("%d", &num1);
for (int i = 1; i <= num1; i++) {
scanf("%d", &num2); // 입력받은 번호는 해당 배열위 위치 값
arr[num2] += 1; // 해당 위치 값에 1만큼 더해 불린 횟수 증가
}
for (int j = 1; j < 24; j++) {
printf("%d ", arr[j]); // 1~23 번 배열에 저장되어 있는 값(=불린 횟수) 출력
}
return 0;
}
코드 분석
1. 크기가 24인 int 형 배열을 선언하여 배열의 요소를 모두 0으로 초기화 하였다.
2. 출석 번호를 부른 횟수인 num1을 입력받고, 첫번째 for문으로 넘어간다.
3. 1~23번 까지의 번호 중에 무작위로 불린 번호를 입력받는다. (예를 들어 4 5 5 6 5 이면 4번이 1번, 5번이 3번, 6번이 1번 불린 것이다.)
4. 만약, 2번이 불렸다면 arr[2]가 선택되고, arr[2]+=1;을 해주어 arr[2]의 요소 값을 1만큼 더해준다.
5. 위 과정을 반복한 다음 두번째 for문으로 와서 arr[1] 부터 arr[23] 까지 각각 저장되어 있는 값, 즉 불린 횟수를 출력한다.
end
배열이 아직 익숙하지 않아서 기본 개념부터 공부한 다음 문제를 풀어보았더니 어느정도 감이 오기 시작한다. 배열 문제를 혼자 풀 수 있도록 문제를 더 풀어보면서 많이 연습해야겠다.