문제 설명

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

제한 조건
  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예sreturn
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 


풀이코드

더보기
import java.lang.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        int min = 1000000;
        int max = -1000000;
        StringBuilder str = new StringBuilder();
        int num = 0;
        
        for(int i=0; i<s.length(); i++) {
            if(Character.isDigit(s.charAt(i)) || s.charAt(i) == '-') { // 음수이거나 숫자일때
                str.append(s.charAt(i));
            } 
            
            if(s.charAt(i) == ' ' || s.length() -1 == i) { // 공백이거나 마지막 인덱스일때
                num = Integer.parseInt(str.toString());
                min = Math.min(num, min);
                max = Math.max(num, max);
                str = new StringBuilder();
            }
        }
        
        answer = min + " " + max;
        
        return answer;
    }
}

풀이방법

문자열로 주어진 숫자를 정수형으로 비교하여서 최솟값과 최대값을 찾는 문제다.

 

  1. 문자열의 크기만큼 반복문을 돌리고 숫자인지 - 인지 체크하여 str 문자열에 넣는다.
  2. 공백이나 끝 인덱스에 도착하면 해당 문자열을 int형으로 변환하여 Math 클래스로 최솟값과 최대값을 찾는다.
  3. 그렇게 찾은 최소값과 최대값을 출력해주면 풀이가 완료된다.

'알고리즘 > Programmers' 카테고리의 다른 글

[Programmers] 피보나치 수  (0) 2021.11.30
[Programmers] 최솟값 만들기  (0) 2021.11.30
[Programmers] 키패드 누르기  (0) 2021.11.30
[Programmers] 내적  (0) 2021.11.28
[Programmers] 폰켓몬  (0) 2021.11.28