1) 문제: 120583. 중복된 숫자 개수
정수가 담긴 배열 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 |
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) 배운 점
같은 실수를 제발 반복하지 말자…
결국 똑같은 방법이고 로직이지만 로직 순서만 바뀌거나 숫자만 바뀌는 경우가 많은 것 같다.
쫄지도 말고 모른다고 바로 블로그 찾아보기보단, 스스로 생각할 시간을 더 가져보자.
'Computer Science > PS' 카테고리의 다른 글
[PS] 120847. 최댓값 만들기(1) (1) | 2023.11.13 |
---|---|
[PS] 120903. 배열의 유사도 (0) | 2023.11.13 |
[PS] 120854. 배열 원소의 길이 (0) | 2023.11.12 |
[PS] 120841. 점의 위치 구하기 (1) | 2023.11.11 |
[PS] 120889. 삼각형의 완성조건(1) (0) | 2023.11.11 |