본문 바로가기

programmers-코딩테스트 연습/Level 2.자바

2021-12-25 / 최댓값과 최솟값

문제 설명

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

 

제한 조건

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

 

입출력 예

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 

 

 

기본 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        return answer;
    }
}

 

 

정답 코드

import java.util.Arrays;
class Solution {
    public String solution(String s) {

        String[] arr = s.split(" ");
        int[] list=new int[arr.length];

        for(int i=0;i<arr.length;i++)
            list[i] = Integer.parseInt(arr[i]);

        Arrays.sort(list);
       
        return list[0]+" "+list[list.length-1];
    }
}

 

 


 

전체적인 로직은

  1. 공백을 기준으로 문자열 자르고 배열에 넣기
  2. String to int
  3. 정렬 후 최솟값과 최댓값 가져오기

이런 순서로 진행된다.

 

문자열 s는 공백과 문자가 섞여있기 때문에 공백을 기준으로 나눠진 문자들을 나누어 배열에 넣기 위해 split()을 사용하였다. 매개변수로 " "을 주어 공백을 기준으로 들어갈 수 있도록 했다. split()은 배열을 반환하기 때문에 곧바로 int형으로 바꿀 수 없었다. 그래서 따로 arr이라는 문자열에 넣은 후 int형으로 바꿨다. int형으로 바꾸기 위해 Integer.parseInt()를 사용해 int형 배열에 넣었다. 최솟값과 최댓값을 차례로 구하기 위해 오름차순으로 정렬하여 첫번째 방과 마지막 방을 가져와 return 해주면 된다.

 

+) 자바스크립트로 문제를 풀면 매우 간단해진다. 따로 타입이 없기 때문에 여러 단계를 거치지 않고 바로 사용할 수 있기 때문이다. 밑에 코드처럼..

 

function solution(s) {
    let str = s.split(" ").sort(function(a,b){
        return a-b;
    });

    return str[0]+" "+str[str.length-1];
}

 

 

 

 

 

코딩테스트 연습 - 최댓값과 최솟값

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

programmers.co.kr