코딩테스트 회고록/코테_Java

[JAVA] 프로그래머스 - 중복된 숫자 개수

iamjisu 2023. 2. 10. 15:50

프로그래머스 코딩테스트 연습 입문단계 '중복된 숫자 개수' 문제입니다.

https://school.programmers.co.kr/learn/courses/30/lessons/120583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

정수가 담긴 배열 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

✏️ 직접 구현한 코드

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

🗣️ 코드 설명

  1. i가 array의 길이 만큼 반복하는 for문을 만들었습니다.
  2. for문 안에서, if문을 이용해 array[ i ]가 n과 같을 때만 cnt가 하나 증가하도록 했습니다.

🔥다른 사람의 코드

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        for (int num : array) {
            if (num == n) answer++;
        }
        return answer;
    }
}

코드 전체적으로 비슷하긴 하지만, 이 사람은 for each문을 사용했다는 부분에서 차이점이 있습니다.

for each문은 아래서 더 자세히 알아보겠습니다.


⭐ 새롭게 알게 된 점

 for each 문  : 주로 배열의 순차적인 반복을 해야할 때 유용하게 쓰인다.

인덱스를 가지고 표현하는 것이 아닌 for문이 도는동안 numbers에서 순서대로 하나씩 꺼내와서 쓰는 방식이다.

 

for each문은 일반 for문과 조건문의 구조가 다르다.

  • 일반 for문은 조건문이 (초기식; 조건식; 증감식)으로 구성되어있지만,
  • for each문은 조건문이 (초기식 : 배열 레퍼런스)로 구성되어있다.

 

다음은 for each문을 이용해 배열의 모든 값을 더하는 코드이다.

// 사용 예

int arr[] = {1,2,3,4,5,6};
int sum = 0;

for(int x : arr)
	sum += x;
    
System.out.println("합계 : "+sum);
합계 : 21

이런 식으로 배열의 값을 순차적으로 사용할 때 많이 사용한다.