본문 바로가기

알고리즘/프로그래머스

[프로그래머스]Lv.2 최댓값과 최솟값

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

 

프로그래머스

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

programmers.co.kr


문제

  • 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. 
  • str 에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
  • 예를 들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

제한사항

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

입출력 예제

설계과정

1. 입력받은 문자열을 공백 기준으로 하나씩 자른다.

 

2. 자른 문자들을 숫자로 형변환해서 배열에 넣는다.

 

3. Collections.min 과 Collections.max 를 사용해서 최소값, 최대값을 출력한다.

 

3 가지 정도로 풀어봤고, 그 중 가장 깔끔한 Collections 사용 코드로 작성했다.


풀이과정

1. 입력받은 문자열을 공백 기준으로 하나씩 자른다.

  • split() : 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나눠서 배열에 저장하여 리턴한다.

2. ArrayList 로 arr 배열을 선언하고, 숫자로 형변환하여 값들을 배열에 넣는다.

  • Collections 사용 위해 ArrayList 를 사용했다.
  • Integer.parseInt() 를 통해 숫자로 형변환했다.

3. Collections.min() 과 Collections.max() 를 사용해서 최소값과 최대값을 리턴한다.

 

4. 결과를 출력한다. 


답안소스

  • 프로그래머스
import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] str = s.split(" ");
        
        ArrayList<Integer> arr = new ArrayList<Integer>();
        
        for(int i=0; i<str.length; i++) {
            arr.add(Integer.parseInt(str[i]));
        }
        
        answer = Collections.min(arr) + " " + Collections.max(arr); 
        
        return answer;
    }
}