Javadocs

[Programmers] 가까운 수 찾기 (Java) 본문

SelfStudy/Programmers(코딩테스트)

[Programmers] 가까운 수 찾기 (Java)

Javatist 2023. 4. 15. 19:51

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

프로그래머스

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

programmers.co.kr

[ 문제 설명 ]
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n 과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
[ 제한 사항 ]

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ array의 원소 ≤ 100
  • 1 ≤ n ≤ 100
  • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

[ 입출력 예 ]

arraynresult
[ 3, 10, 28 ]2028
[ 10, 11, 12 ]1312

[ 입출력 예 설명 ]
입출력 예 #1

  • 3, 10, 28 중 20과 가장 가까운 수는 28입니다.

입출력 예 #2

  • 10, 11, 12 중 13과 가장 가까운 수는 12입니다.

[ 풀이 ]

import java.util.ArrayList;
import java.util.Collections;

class Solution {
public static int solution(int[] array, int n) {
        
        int min = 100;
        
    	for (int i = 0; i < array.length; i++) {	// 주어진 배열 array의 길이만큼 반복
        	// 배열 array에 주어진 n을 뺀 수를 절대값 처리. 그리고 최소값과 비교
    		if (Math.abs(array[i]-n) < min) {		 
        		min = Math.abs(array[i]-n);		// 계산한 절대값을 최소값 min에 저장
        	}
    	}	// 여기까지 제일 작은 min 값이 지정된 상태.
        // 위 min과 비교하기 위해 배열의 크기가 가변적인 배열 선언
    	ArrayList<Integer> arr = new ArrayList<Integer>();
        for (int i = 0; i < array.length; i++) {
        	if (Math.abs(array[i]-n) == min) {	// 위 min과 같은 수를 찾기
        		arr.add(array[i]);	// 같은 수의 인덱스 값을 arr 배열에 저장
        	}
        }
        //System.out.println(arr);
        // 가장 가까운 수가 여러 개일 경우 더 작은 수를 return해야 하므로 오름차순 정렬
        Collections.sort(arr);		
    
        return arr.get(0);
    }
}

 


[설명]

ArraysList();

일반적인 배열()과의 차이점은 배열은 크기가 고정인 반면에, ArrayList는 크기가 가변적입니다.

# ArrayList의 생성

ArrayList를 사용하려면 아래 구문을 먼저 추가해야 합니다.

ArraysList<Integer> arr1 = new ArraysList<Integer>();	// 타입을 지정
ArraysList<Integer> arr2 = new ArraysList<>();	// 타입 생략 가능
ArraysList<Integer> arr3 = new ArraysList<>(10); // 초기 크기 설정
ArraysList<Integer> arr4 = new ArraysList<>(arr1); // 다른 Collection 값으로 초기화
ArraysList<Integer> arr5 = new ArraysList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()를 사용해 기본 값들로 생성 가능.

Collections.sort(); 

Arrays.sort()와 비교를 많이 되는데 Arrays.sort() 배열을 정렬할 때 사용하고 Collections.sort()는 List를 정렬할 때 사용한다.

Comments