본문 바로가기
Java.APS/APS.Programmers

[Programmers] 최댓값과 최솟값

by 개발자 아구몬 2023. 12. 3.

최댓값과 최솟값

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이


class Solution {
    public String solution(String s) {
        // 최대값, 최소값 설정
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        // 마이너스
        int minus = 1;
        // 현재의 수
        int now = 0;
        
        // 주어진 문자열의 길이만큼 반복문을 돌린다.
        for(int i = 0; i < s.length(); i++){
            // 띄어쓰기를 할 때마다 지금까지 만든 숫자들을 max, min과 비교한다.
            if(s.charAt(i) == ' ') {
                // 음수인지
                now *= minus;
                max = Math.max(max, now);
                min = Math.min(min, now);
                // 마이너스와 , 현재 수 초기화
                minus = 1;
                now = 0;
                // 반복문을 넘긴다
                continue;
            }
            // 문자가 마이너스일 경우 마이너스를 음수값으로
            else if(s.charAt(i) == '-'){
                minus = -1;
                continue;
            }
            // '0'~'9'는 char값이므로 '0'을 빼줘서 int화 시킴
            int cur = s.charAt(i) - '0';
            // 지금까지의 수에 10을곱해서 한자리 앞당긴 뒤 현재 수를 더한다.
            now = now*10 + cur;
            

        }
        // 마지막엔 공백이 나오지 않기 때문에 한번 더 대입해준다.
        now *= minus;
        max = Math.max(max, now);
        min = Math.min(min, now);
        
        return min + " " + max;
    }
}
  • 문자열을 하나씩 검사하면서 char 값을 통해서 숫자를 계산하는 방식
  • 사실 이렇게 할 필요는 없고 그냥 구현해보고 싶었던 코드다.
class Solution {
    public String solution(String s) {
        // 최대값, 최소값 설정
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        // split 메서드를 통해 배열을 나눈다.
        String[] str = s.split(" ");
        
        // 주어진 문자열의 길이만큼 반복문을 돌린다.
        for(int i = 0; i < str.length; i++){
            //parseInt를 통해 해당 문자열토큰을 int형으로 변경
            int now = Integer.parseInt(str[i]);
            max = Math.max(max, now);
            min = Math.min(min, now);
        }     
        return min + " " + max;
    }
}
  • Java의 문자열 분리 메서드(split)과 문자열을 숫자로 바꾸는 메서드(parseInt)메서드 한방이면 즉효약이다.