Algorythm/프로그래머스 스쿨 (C 언어)

[C] 프로그래머스 스쿨_6주차 문제 2: 중복된 숫자 개수

gapsoo 2023. 8. 11. 21:58

 

 

 


[1] 문제

 

문제 설명

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 1,000
  • 0 ≤ n ≤ 1,000

 

입출력 예

array n result
[1, 1, 2, 3, 4, 5] 1 2
[0, 2, 3, 4] 1 0

 

입출력 예 설명

입출력 예 #1

  • [1, 1, 2, 3, 4, 5] 에는 1이 2개 있습니다.

 

입출력 예 #2

  • [0, 2, 3, 4] 에는 1이 0개 있습니다.

 

 

 


[2] 정답 및 해석

 

#.1 정답 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
// array_len은 배열 array의 길이입니다.
int solution(int array[], size_t array_len, int n) {
    int answer = 0;
    for(int i = 0; i < array_len; i++) {
        if(array[i]==n) {
            answer++;
        }
    }        
    return answer;
}
cs

 

#.2 해석

 

이 C 코드는 주어진 배열에서 특정 숫자 n과 일치하는 원소의 개수를 세는 함수이다.

 

 

1
#include <stdio.h>
cs

 

이 줄은 stdio.h 라이브러리이다. 이 라이브러리는 C 언어에서 표준 입출력 함수인 printf와 scanf를 사용하기 위해 필요한 라이브러리이다.

 

 

1
int solution(int array[], size_t array_len, int n) {
cs

 

이 부분은 solution이라는 함수를 정의하고 있다. 함수의 반환 값은 int 타입이며, 함수에는 세 개의 매개변수가 전달된다.

1. array: 정수형 배열을 나타내는 포인터이다. 함수 내에서 배열의 원소에 접근하기 위해 사용된다.

2. array_len: 배열 array의 길이를 나타내는 size_t 타입의 변수이다.

3. n: 찾으려는 숫자이다.

 

1
int answer = 0;
cs

 

answer라는 이름의 정수형 변수를 선언하고 0으로 초기화한다. 이 변수는 배열에서 n과 일치하는 원소의 개수를 저장할 용도로 사용된다.

 

1
for(int i = 0; i < array_len; i++) {
cs

 

반복문의 시작을 나타내며, i라는 정수형 변수를 0으로 초기화하고 배열을 반복하면서 각 원소를 검사한다. i는 배열의 인덱스를 나타낸다.

 

1
2
3
if(array[i]==n) {
    answer++;
}
cs

 

현재 인덱스 i의 배열 원소가 n과 일치하는지 확인한다. 만약 일치하면 answer 변수의 값을 1 증가시켜서 n과 일치하는 원소의 개수를 카운트한다.

 

1
return answer;
cs

 

반복문이 끝난 후, answer 변수에 저장된 n과 일치하는 원소의 개수를 반환한다.

 

 

 


[3] 풀이

 

✔️ 배열의 인덱스를 사용할 때 인덱스가 배열의 범위를 넘어가지 않도록 주의해야 한다. 현재 코드에서는 배열의 인덱스를 0부터 array_len - 1까지 사용하고 있다.

 

 

 


[4] 느낀 점

 

1학기에 c언어 배울 때 배열 단원부터 공부를 소홀히 했는데 확실히 개념을 잘 모르겠다. 여름 방학에 복습하고 있어서 다행이다.