본문 바로가기
Computer Science/PS

[PS] 120583. 중복된 숫자 개수

by BrickSky 2023. 11. 12.

1) 문제: 120583. 중복된 숫자 개수

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

제한사항

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

입출력 예 설명

arraynresult
[1, 1, 2, 3, 4, 5]12
[0, 2, 3, 4]10

 

2) 나의 첫 풀이

어떻게 해야 할지 감이 잡히지 않아,, 블로그를 좀 찾아봐야겠다.
힌트를 얻었다. 우선 answer변수를 만들고 해당 배열을 돌며 특정 수가 있으면 answer++로 값을 넣어주면 된다.
우선 제한 사항의 조건들을 모두 코드에 반영해 줄 생각이다.

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// array_len은 배열 array의 길이입니다.
int solution(int array[], size_t array_len, int n) {
    int answer = 0;
    
    if(1<=array_len && array_len<=100 &&
       0<=array[] && array[]<=1000 &&
       0<=n && n<=1000){
        for (int i=0; i<=array_len; i++){
            if(array[i] == n){
                answer++;
            }
        }
    }
    return answer;
}

또 같은 실수를 반복했다.
i ≤ array_len; 부분에선 등호가 들어가면 안 된다.
배열의 인덱스는 0부터 시작하기 때문에 등호가 들어가면 배열의 범위를 초과한다.
 

3) 수정한 풀이

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// array_len은 배열 array의 길이입니다.
int solution(int array[], size_t array_len, int n) {
    int answer = 0;
    
    if(1<=array_len && array_len<=100 &&
       0<=array[0]&& array[0]<=1000 &&
       0<=n && n<=1000){
        for (int i=0; i<array_len; i++){
            if(array[i] == n){
                answer++;
            }
        }
    }
    return answer;
}

 

4) 배운 점

같은 실수를 제발 반복하지 말자…
결국 똑같은 방법이고 로직이지만 로직 순서만 바뀌거나 숫자만 바뀌는 경우가 많은 것 같다.
쫄지도 말고 모른다고 바로 블로그 찾아보기보단, 스스로 생각할 시간을 더 가져보자.