티스토리 뷰
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
- s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
"1 2 3 4" | "1 4" |
"-1 -2 -3 -4" | "-4 -1" |
"-1 -1" | "-1 -1" |
음수가 포함되어 있고 숫자가 한 자리 수가 아니기 때문에 공백으로 구분해야 하는 문제입니다.
띄어쓰기가 있으면 그 전 문자열을 숫자로 변환해서 비교하도록 해서 풀었는데,
그냥 String s를 split 메소드로 인자 " "을 입력해서 분리한 후 문자열 배열을 숫자로 변환해서 비교해도 됩니다.
풀이 안보고 푼 것
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
int min = 999999;
int max = -999999;
String tmp = "";
int tempNum = 0;
s += " ";
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
tempNum = Integer.parseInt(tmp);
if (tempNum < min)
min = tempNum;
if (tempNum > max)
max = tempNum;
tmp = "";
} else {
tmp += c;
}
}
answer = min + " " + max;
return answer;
}
}
간단하게 푸는 방법
public static String solution(String s) {
String answer = "";
String tmp = "";
int tempNum = 0;
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 < min)
min = num;
if (num > max)
max = num;
}
answer = min + " " + max;
return answer;
}
'알고리즘 > 프로그래머스 lv2' 카테고리의 다른 글
프로그래머스 lv2 피보나치 수 (0) | 2023.03.30 |
---|---|
프로그래머스 lv2 다음 큰 숫자 (0) | 2023.03.30 |
프로그래머스 lv2 숫자의 표현(java) (0) | 2023.03.30 |
프로그래머스 lv2 올바른 괄호 & 짝지어 제거하기(java) (0) | 2023.03.30 |
프로그래머스 lv2 최솟값 만들기 (0) | 2023.03.30 |
댓글