IJY
느리더라도 꾸준히
IJY
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • Develop (67)
      • Java (8)
      • Go (0)
      • Test (1)
      • Web (1)
      • HTML, CSS (1)
      • TIL(Today I Learned) (18)
      • SQL (0)
      • Algorithm (27)
      • 회고 (7)
      • Troubleshooting (1)
      • Etc (3)
    • Etc (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • Interceptor
  • 독후감
  • 백준
  • 소수 찾기
  • instance
  • API 예외 처리
  • Filter
  • java
  • Class
  • html
  • stream
  • EntityTransaction
  • web
  • object
  • 알고리즘
  • BufferedWriter
  • 초기화
  • MVC
  • Spring
  • 우테코 온보딩
  • 프로그래머스
  • sort
  • PostConstruct
  • 재귀
  • init
  • recursion
  • 12921
  • 회고
  • REST Assured
  • BufferedReader

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
IJY

느리더라도 꾸준히

Develop/Algorithm

프로그래머스 lv.2 - 12939 최댓값과 최솟값

2022. 11. 4. 20:00

프로그래머스 lv.2 - 12939 최댓값과 최솟값 문제 풀이

문제 설명

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

 

문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크

 

풀이 코드

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        int min = Arrays.stream(s.split(" ")).mapToInt(Integer::valueOf).min().orElse(0);
        int max = Arrays.stream(s.split(" ")).mapToInt(Integer::valueOf).max().orElse(0);
        String answer = min + " " + max;
        return answer;
    }
}

반복문을 사용한 코드

더보기
import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String[] sArray = s.split(" ");
        int min = Integer.valueOf(sArray[0]), max = Integer.valueOf(sArray[0]);
        for(String o : sArray) {
            Integer i = Integer.valueOf(o);
            if(min > i) {
                min = i;
            } 
            if(max < i) {
                max = i;
            }
        }
        String answer = min + " " + max;
        return answer;
    }
}

문제 해결 전략

이라 쓰고 문제를 보고서 어떻게 풀면 될까?에 대한 생각을 정리한 항목

왜 난이도가 lv.2로 책정이 되어있는지 잘 모르겠던 문제..

stream을 사용하면 간단하게 바로 구할 수 있다!

그런데 stream으로 구현을 했더니 거의 모든 테스트에서 10ms를 초과!

그래서 for문을 사용하여 구현하면 얼마나 차이가 날까? 라는 궁금증에 구현을 해보았다. (위에서 접힌 코드)

그랬더니 12개의 테스트 중 3개를 제외하고 전부 10ms 미만의 속도가 나왔다!

사실 8 ~ 9ms가 나왔기 때문에 엄청나게 큰 차이는 아니라고 생각이 되지만 왜 이런 차이가 나왔는지 의문이다.

일단 stream을 2번 사용하면서 2회의 반복이 일어나고, 반복문 사용 코드는 for문 1회 내에서 끝냈기 때문일까..? 🤔

(그런데 split() 메서드 사용 때문에 결국 비슷한게 아닌가..?)


코드를 업로드해 둔 깃 허브

'Develop > Algorithm' 카테고리의 다른 글

우테코 온보딩 - Problem 2  (0) 2022.11.09
우테코 온보딩 - Problem 1  (0) 2022.11.09
프로그래머스 lv.1 - 131128 숫자 짝꿍  (2) 2022.11.03
프로그래머스 lv.2 - 92335 k진수에서 소수 개수 구하기  (0) 2022.11.03
프로그래머스 Lv.1 - 118666 성격 유형 검사하기  (0) 2022.10.24
    'Develop/Algorithm' 카테고리의 다른 글
    • 우테코 온보딩 - Problem 2
    • 우테코 온보딩 - Problem 1
    • 프로그래머스 lv.1 - 131128 숫자 짝꿍
    • 프로그래머스 lv.2 - 92335 k진수에서 소수 개수 구하기
    IJY
    IJY
    개발 관련 공부한 내용을 정리하는 블로그입니다. 느리더라도 꾸준히 포스팅을 하려고 노력합니다.

    티스토리툴바