Loading the catalog…
Loading the catalog…
문제 소개 프로그래머스 Lv.2 · 최댓값과 최솟값 공백으로 구분된 정수들이 문자열 s 하나로 주어진다. 이 중 가장 작은 수와 가장 큰 수를 찾아 "(최솟값) (최댓값)" 형태의 문자열로 돌려주는 문제다. 정수는 두 개 이상 주어지며, "-1 -2 -3 -4" 처럼 음수가 섞일 수도 있다. 접근 방법 문자열을 숫자 배열로 바꾼 뒤 최솟값과 최댓값을 구했다. split(" ") 으로 공백 기준으로 잘라 문자열 배열을 만든다. 각 조각을 Integer.parseInt 로 변환해 int 배열에 담는다. parseInt 는 "-3" 같은 음수 표기도 그대로 처리한다. Arrays.stream(...).min() 과 max() 로 최솟값과 최댓값을 구한다. 정수가 최소 두 개라는 조건이 있어 getAsInt() 가 빈 값 때문에 예외를 던질 일은 없다. StringBuilder 로 최솟값 + " " + 최댓값 을 이어 붙여 반환한다. 문자열 그대로 비교하면 "-1" 과 "-10" , "9" 와 "10" 처럼 사전 순서와 크기 순서가 달라지므로, 반드시 정수로 바꾼 다음 비교해야 한다. min 과 max 를 스트림으로 따로 구해서 배열을 두 번 돈다. 반복문 하나로 최솟값과 최댓값을 함께 갱신하면 한 번만 돌아도 되지만, 두 방법 모두 O(n)이다. 풀이 코드 class Solution { public String solution(String s) { String answer = ""; String[] s1 = s.split(" "); int[] n1 = new int[s1.length]; for (int i = 0; i < s1.length; i++) { n1[i] = Integer.parseInt(s1[i]); } int min = Arrays.stream(n1).min().getAsInt(); int max = Arrays.stream(n1).max().getAsInt(); StringBuilder res = new StringBuilder(); res.append(min).append(" ").append(max); answer = res.toString(); return answer; } } 시간 복잡도 문자열 길이를 L이라 하면 O(L)이다. split 과 parseInt 가 문자열을 한 번씩 훑고, min / max 는 숫자 개수(L 이하)만큼 각각 한 번씩 돈다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
[프로그래머스] 12939 - 최댓값과 최솟값. 문제 소개 프로그래머스 Lv.2 · 최댓값과 최솟값 공백으로 구분된 정수들이 문자열 s 하나로 주어진다. 이 중 가장 작은 수와 가장 큰 수를 찾아 "(최솟값) (최댓값)" 형태의 문자열로 돌려주는 문제다. 정수는 두 개 이상 주어지며, "-1 -2 -3 -4" 처럼 음수가 섞일 수도 있다. 접근 방법 문자열을 숫자 배열로 바꾼 뒤 최솟값과 최댓값을 구했다. split(" ") 으로 공백 기준으로 잘라 문자열 배열을 만든다. 각 조각을 Integer.parseInt 로 변환해 int 배열에 담는다. parseInt 는 "-3" 같은 음수 표기도 그대로 처리한다. Arrays.stream(...).min() 과 max() 로 최솟값과 최댓값을 구한다. 정수가…