항해99 온보딩 스터디[Java 언어 기초] 10일차

Hohomi·2023년 3월 17일
0
post-thumbnail

스터디 10일차 : 코딩테스트(Lv.0) 풀기


🍎 중복된 숫자 개수

정수가 담긴 배열 array에 정수 n이 몇 개 들어있는지 리턴하기

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        for (int i : array) {
            if (i == n) {
                answer++;
            }
        }
        return answer;
    }
}
  • 원래 Collections.frequency()라는 메소드를 사용해보려 했는데, ArrayList를 처음 본 지라 타입 변환하는 부분에서 뭔가가 막혀 반복문으로 돌아왔다.
  • 위에서는 for each문을 사용해보았는데, for문에 비해 괄호 부분이 훨씬 간결하다.
  • for ( 각 요소 값 : 배열 또는 컨테이너 값 ) { 반복 수행할 작업 } 의 형태로 사용할 수 있다.
  • 배열에서 인덱스를 알 필요가 없을 때 사용하면 좋다. for문과 달리 종료되는 조건 역시 따로 적어줄 필요가 없다.

🍎 배열 자르기

정수 배열 numbers의 num1번째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 리턴하기

import java.util.Arrays;

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        return Arrays.copyOfRange(numbers, num1, num2+1);
    }
}
  • Arrays.copyOfRange() 메서드 사용! 딱 이 문제에 최적화된 기능을 갖고 있다. num1번째 인덱스부터 num2번째 인덱스까지를 잘라서 딱 그 부분만 출력한다.
  • 주의점은 문제에 따라 어느 인덱스까지 포함/미포함 시킬지 지정을 잘 해주어야 한다.

🍎 배열 뒤집기

정수 배열 num_list의 원소 순서를 거꾸로 뒤집은 배열을 리턴하기

class Solution {
    public int[] solution(int[] num_list) {
        int[] reverseList = new int[num_list.length];

        for (int i=num_list.length-1, j=0; i >= 0; i--, j++) {
                reverseList[j] = num_list[i];
        }
        return reverseList;
    }
}
  • 이 문제를 기록하는 이유는 for문의 초기값,조건식,증감식에 두 개 이상의 변수를 넣을 때 저렇게도 쓸 수 있다는 걸 남기기 위해서다.
  • 한번에 저렇게 된 건 절대 아니고, IDE에서 여러 번 출력값 돌려보면서 식을 맞추었다.ㅋㅋ

🍎 짝수 홀수 개수

정수가 담긴 리스트 num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 리턴하기

class Solution {
    public int[] solution(int[] num_list) {
        int oddNum = 0;
        int evenNum = 0;

        for (int i=0; i < num_list.length; i++) {
            if (num_list[i]%2 == 0) {
                evenNum++;
            } else {
                oddNum++;
            }
        }
        return new int[]{evenNum, oddNum};
    }
}
  • 이 문제는 마지막에 리턴값에서 배열을 생성과 동시에 리턴값 안에 넣을 수 있다는 게 새로웠다.
  • 저 생김새가 일단 매우 헷갈리게 생겼는데.. 11일차 스터디에서 마침 또 배열을 다루는 문제들이 나온다 하니, 풀면서 공부를 더 해보아야겠다.



참고자료

Collections & ArrayList

for each문 사용법

프로그래머스 코딩테스트 연습 입문

profile
게발로 개발하기

0개의 댓글