최대값과 최소값

이리·2024년 12월 20일
0
post-thumbnail

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

문제설명

  • 주어진 파라미터: String s
  • 반환값: String
  • 문자열 s는 공백으로 구분된 숫자들이 저장 ex: 1 2 3 4
  • str에 타나나는 숫자 중 최소값과 최대값을 찾아 “최소값 최대값“ 형태의 문자열을 반환

풀이방식

  1. s를 숫자 단위로 나눠야한다. → split() 함수 사용
  2. split한 배열을 담을 공간 마련 → String[]
  3. 배열을 하나씩 돌면서 최대값, 최소값 찾기 → String을 어떻게 숫자로 판단할까 → Integer.parseInt(str) 사용

코드

class Solution {
    public String solution(String s) {
        String answer = "";
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        
        // 숫자 개수 확인 
        String str = "";
        str = s.replace(" ", "").replace("-", "");
        int len = str.length();
        String[] list = new String[len];
        
        list = s.split(" ");
    
        
        for(String c : list){
            
            int num = Integer.parseInt(c);
            if(num > max){
                max = num;
            }
            if(num < min){
                min = num;
            }
        }
        
        answer += min + " " + max;
        
        return answer;
    }
}

회고

이것도 뭔가 복잡하게 푼것 같은 느낌이 있다 우선 풀면서 의문이 갔던 부분들을 다시 살펴 보자

  1. s.split(” “)를 하게 된다면 문자열을 반환하게 되는데 이것은 str 자체를 변환시키는 것일까?

    String str = s.replace(" ", "").replace("-", "");

    ⇒ 원본 s는 건드리지 않는다.

  2. 기존에 list는 숫자를 설정해 준 상태에서만 값을 넣을 수 있다 생각해서, list의 숫자를 설정하는데 추가적인 작업이 소요됐다. 바로 삽입이 가능할까?

    String str = "";
    str = s.replace(" ", "").replace("-", "");
    int len = str.length();
    list = s.split(" ");

    ⇒ 별도의 길이를 지정해주지 않아도 된다.

    String[] list = s.split(" ");

    ⇒ split() 메서드의 경우 배열의 크기가 split()의 결과에 따라 동적으로 결정되기 때문에 배열의 크기는 자동으로 설정된다.

이를 적용해서 리팩토링 해보쟈~

class Solution {
    public String solution(String s) {
        String answer = "";
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        
        // 숫자 개수 확인 
        String[] list = s.split(" ");
    
        
        for(String c : list){
            
            int num = Integer.parseInt(c);
            if(num > max){
                max = num;
            }
            if(num < min){
                min = num;
            }
        }
        
        answer += min + " " + max;
        
        return answer;
    }
}

코드가 훨씬 간단해지는걸 확인할 수 있다! 뿌듯!


참 쉽쥬잉~?~?

0개의 댓글