■ 문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
■ 제한 조건
s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
class Solution {
public String solution(String s) {
String answer = "";
String[] numbers = s.split(" ");
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
System.out.println(min);
for(int i = 0; i < numbers.length; i++){
int number = Integer.parseInt(numbers[i]);
min = Math.min(min, number);
max = Math.max(max, number);
}
answer = min+ " " +max;
return answer;
}
}
■ 코드풀이
Math.max()와 Math.min() 함수는 파라미터로 입력받은 숫자들 중 '최대값'과 '최소값'을 구해서 리턴하는 함수이다.
해당 코드를 해석해보면 함수 호출과 동시에 파라미터 값으로 들어온 문자열 s를
split()함수를 이용하여 공백을 기준으로 문자열을 잘라 String[]배열에 차례로 넣어주게 된다.
변수로는 min과 max를 선언하여 Integer => 정수형에서 가장 큰 값을 min에 대입해주고
Integer => 정수형에서 가장 작은 값은 max에 대입시켜준다.
코드 분석을 할때 왜 min에다가 Integer.max값을 넣고 max에는 Integer.min값을 넣은거지?? 했다.
앞서 spilit()함수를 이용하여 공백기준 문자열을 자른 값 배열인 number의 값(문자형)을 정수형으로 바꿔주기 위해
Integer.parseInt()로 형을 바꾸어주고, Math.min(비교값, 비교값)/Math.max(비교값, 비교값) 함수를 활용하게 되는데
이때 min(정수형 가장 큰 값인 2147483647, 배열에 들어있는 값) 을 비교하게 되면 for문을 돌면서 배열의 가장 작은 값을 찾아낼 수 있다.
max도 마찬가지고(정수형 가장 작은 값인 -2147483648, 배열에 들어있는 값)을 비교하여 배열의 가장 큰 값을 뽑아 낼 수 있음을 알 수 있다.
파이썬과 자바모두 알고리즘을 수월하게 풀기 위해서 함수 활용을 적절하게 잘 사용해야된다고 느끼는 요즘이다.
'컴퓨터 프로그래밍 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Lv0. 문자열 뒤집기/배열자르기/정수의 합 (0) | 2022.11.21 |
---|---|
[프로그래머스] Lv0. 최대값 만들기 (0) | 2022.11.21 |
[프로그래머스] Lv0. 배열 뒤집기 (0) | 2022.11.21 |