문제
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
제한사항
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[] arr = s.split(" ");
// 첫 번째 숫자를 기준으로 최소값과 최대값 초기화
int min = Integer.parseInt(arr[0]);
int max = Integer.parseInt(arr[0]);
// 배열의 나머지 숫자를 순회하며 최소값과 최대값 찾기
for (String numStr : arr) {
int num = Integer.parseInt(numStr);
if (num > max) max = num;
if (num < min) min = num;
}
// 최소값과 최대값을 반환
return min + " " + max;
}
}
다른 풀이 1
import java.util.Arrays;
public class GetMinMaxString {
public String getMinMaxString(String str) {
String[] array = str.split(" ");
int[] arrayInt = new int[array.length];
for (int i = 0; i < arrayInt.length; i++) {
arrayInt[i] = Integer.parseInt(array[i]);
}
Arrays.sort(arrayInt);
String result = arrayInt[0] + " " + arrayInt[arrayInt.length - 1];
return result;
}
public static void main(String[] args) {
String str = "9 19";
GetMinMaxString minMax = new GetMinMaxString();
// 아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println("최대값과 최소값은?" + minMax.getMinMaxString(str));
}
}
추가로 고민 할 부분
비슷한 방식으로 풀었다.
sort 함수도 활용할 수 있다.
Lv.2 / Java / 연습문제
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv. 2] 피보나치 수 - JAVA (0) | 2024.08.13 |
---|---|
[프로그래머스 Lv. 2] 올바른 괄호 - JAVA (0) | 2024.08.12 |
[프로그래머스 Lv. 1] 하샤드 수 - JAVA (0) | 2024.08.10 |
[프로그래머스 Lv. 1] 정수 제곱근 판별 - JAVA (0) | 2024.08.09 |
[프로그래머스 Lv. 1] 정수 내림차순으로 배치하기 - JAVA (0) | 2024.08.08 |