[programmers] Java Lv. 2 - 최댓값과 최솟값

2022. 9. 27. 17:36·Algorithm Solving/Java

문제

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다.

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

 

제한 조건

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

 

입출력 예

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

풀이

1. split메서드를 사용해서 공백을 기점으로 자른 문자열들을 배열에 저장

2. 배열의 0번째 값을 min값과 max값으로 초기화

3. 배열의 1번째 값부터 마지막 값을 min과 max와 비교하여 최댓값과 최솟값을 저장

class Solution {
    public String solution(String s) {
        //s에서 공백을 기점으로 잘라서 배열에 저장
        String[] numArr = s.split(" ");
        //for(int i=0; i<numArr.length; i++){
        //    System.out.println(numArr[i]);
        //}
        int min = Integer.parseInt(numArr[0]);
        int max = min;
        for(int i = 1; i < numArr.length; i++){
            int testNum = Integer.parseInt(numArr[i]);
            if(min > testNum) min = testNum;
            if(max < testNum) max = testNum;
        }
        return min + " " + max;
    }
}

실수

예시만 보고 문제를 잘못 이해해서 실수를 했다.

매개변수 String s에는 둘 이상의 정수가 공백으로 구분되어 있는 것인데, -9 ~ 9까지의 정수에만 해당한 풀이를 해버렸다.

일의 자리 수에만 해당하는 문제라고 생각하고 풀이한 코드는 아래와 같다.

class Solution {
    public String solution(String s) {
        int min;
        int max;
        if(s.charAt(0)=='-'){
            min = Character.getNumericValue(s.charAt(1)) * -1;
            max = min;
        }else{
            min = Character.getNumericValue(s.charAt(0));
            max = min;
        }
        for(int i=1; i<s.length(); i++){
            if(s.charAt(i)==' ' || s.charAt(i)=='-')
                continue;
            else{
                int temp = Character.getNumericValue(s.charAt(i));
                if(s.charAt(i-1)=='-') 
                    temp = temp * -1;
                if(min > temp) min = temp;
                if(max < temp) max = temp;
            }
        }
        return min + " " + max;
    }
}

다시 풀고 나서 생각해보니 charAt과 Character.getNumericValue메서드를 쓸 필요 없었다.

split을 사용했다면 음수와 양수를 판별하는 if문이 생략되기 때문에 더 간단하게 해결이 가능했다.

문제를 잘못 읽었어도 좀 더 생각해서 풀었으면 처음부터 틀리지 않았을 것 같아 아쉽다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > Java' 카테고리의 다른 글

[programmers] Java Lv. 2 - 올바른 괄호  (1) 2022.10.04
[programmers] Java Lv. 2 - 이진 변환 반복하기  (1) 2022.09.30
[programmers] Java Lv. 2 - 최솟값 만들기  (3) 2022.09.30
[programmers] Java Lv. 2 - JadenCase 문자열 만들기  (2) 2022.09.30
[programmers] Java Lv. 1 - 짝수와 홀수  (0) 2022.09.27
'Algorithm Solving/Java' 카테고리의 다른 글
  • [programmers] Java Lv. 2 - 이진 변환 반복하기
  • [programmers] Java Lv. 2 - 최솟값 만들기
  • [programmers] Java Lv. 2 - JadenCase 문자열 만들기
  • [programmers] Java Lv. 1 - 짝수와 홀수
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147)
      • TIL (Today I Learned) (56)
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    greedy
    bootstrap
    백준
    CSS
    dp
    javascript
    java
    BOJ
    백트래킹
    Firebase
    jQuery
    Subquery
    DFS
    Google Fonts
    HTML
    jwt
    jpa
    sql
    시뮬레이션
    programmers
    join
    mysql
    BFS
    websocket
    그리디
    자료구조
    GROUP BY
    프로그래머스
    완전탐색
    다이나믹프로그래밍
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[programmers] Java Lv. 2 - 최댓값과 최솟값
상단으로

티스토리툴바