중복된 숫자 개수 문제

GOYENA·2025년 3월 27일

algorithm

목록 보기
3/12

중복된 숫자 개수

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

🤔 접근

  1. array를 for문으로 순회하면서, array[i]의 값이 n과 같은지 알아내기.
  2. 만약 같다면, answer에 1씩 더하기.
  3. answer 리턴하기.

👿 에러 발생

에러난 코드

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        for(i=0; i<array.length; i++){
            if(array[i]==n){
                answer++;
            }
        }
        return answer;
    }
}

😇에러 해결!

for문에서 i=0의 데이터 타입을 지정해 주지 않았다. 객체지향언어의 매운맛!! 더 꼼꼼하게 생각하고 보자!!

해결된 코드

class Solution {
    public int solution(int[] array, int n){
        int answer = 0;
        for(int i=0; i<array.length; i++){
            if(array.length>=1 &&
               array.length<=100 &&
               n>=0 &&
               n<=1000 &&
               array[i]==n){
               answer++;
               }
        }
         return answer;
    }
}

💡한번 더 생각해보기!

이 문제는 '나머지 구하기 문제'와 달리 else가 없는데도 왜 오류가 나지 않았을까?

'나머지 구하기 문제'는 if문으로 매개변수의 범위를 지정했다.
if문에서 지정한 범위 밖의 매개변수가 입력되었을 때, return을 하지 못하는 상황이 생긴다. 그래서 오류가 난다.
'중복된 숫자 개수 문제'는 if문으로 지정한 array.length와 n의 범위를 넘어서는 매개변수가 입력되더라도,

 if(array[i]==n){
               answer++;
               }

이 부분에서 연산이 되기 때문에 return이 가능하다. 그래서 이 문제는 else가 없어도 오류가 나지 않는다.
위의 코드를 삭제해보니 오류가 뜬다. 내가 생각했던 것이 맞나보다.

profile
헤헷

0개의 댓글