문제 설명
문자열 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" |
코드 설명
문자열 s가 주어지면 공백을 기준으로 split하여 String 배열 arr을 만듭니다. 그리고 최솟값과 최댓값을 저장할 변수 min, max을 선언하여 arr의 첫 원소를 정수로 바꾼 값으로 초기화합니다.
이후 반복문을 통해 최솟값과 최댓값을 찾아줍니다. arr의 i번째 원소를 정수로 바꾼 값을 num이라 하고 min이 num보다 크다면 min = num, max가 num보다 작다면 max = num이 됩니다.
이후 min과 max를 각각 문자열로 바꾸어 사이에 공백을 더해 answer에 넣어주면 됩니다.
class Solution {
public String solution(String s) {
String[] arr = s.split(" ");
int min,max;
min = max = Integer.parseInt(arr[0]);
for(int i=1;i<arr.length;i++){
int num = Integer.parseInt(arr[i]);
if(min>num) min = num;
if(max<num) max = num;
}
String answer = String.valueOf(min)+" "+String.valueOf(max);
return answer;
}
}
하지만 java의 Colletions와 ArrayList를 활용하여 더 간단하게 구현할 수도 있습니다.
공백 문자 split을 통해 String 배열 arr은 똑같이 만들고, ArrayList num을 선언하여 반복문을 통해 num에 arr의 원소를 정수로 바꾼 값을 넣어줍니다.
이후 Collections.min / Collections.max를 이용하여 num에서 한 번에 최솟값과 최댓값을 찾을 수 있습니다.
import java.util.Collections;
import java.util.ArrayList;
class Solution {
public String solution(String s) {
String[] arr = s.split(" ");
ArrayList<Integer> num = new ArrayList<Integer>();
for(int i=0;i<arr.length;i++) num.add(Integer.parseInt(arr[i]));
String answer = Collections.min(num)+" "+Collections.max(num);
return answer;
}
}'알고리즘 공부' 카테고리의 다른 글
| [프로그래머스] 점프와 순간이동 자바(Java) (0) | 2023.05.03 |
|---|---|
| [프로그래머스] 영어 끝말잇기 자바 (0) | 2023.05.01 |
| [프로그래머스] 완주하지 못한 선수 Java (0) | 2023.04.12 |
| [프로그래머스] 바탕화면 정리 Java (0) | 2023.04.10 |
| [프로그래머스] 햄버거 만들기 Java (0) | 2023.04.09 |