끄적끄적 코딩
728x90

문제 설명

문자열 s에는 공백으로 구분된 여러 숫자가 저장되어 있습니다. 이 숫자들 중 최소값최대값을 찾아, 이를 "(최소값) (최대값)" 형태의 문자열로 반환하는 함수를 작성하세요.


제한 조건

  1. s는 공백으로 구분된 두 개 이상의 정수를 포함합니다.

해결 방법

알고리즘: 순차 탐색

  1. 문자열 분리 및 변환
    • 문자열 s를 공백 기준으로 분리한 후, 각 요소를 정수로 변환하여 배열로 만듭니다.
  2. 최소값과 최대값 탐색
    • 배열을 순회하며 각 요소를 비교해 최소값최대값을 갱신합니다.
    • 순차 탐색 방식으로 효율적으로 최소값과 최대값을 동시에 계산합니다.
  3. 결과 반환
    • 최소값과 최대값을 공백으로 구분된 하나의 문자열로 반환합니다.

시간 복잡도

  1. 문자열 분리 및 변환
    • 문자열을 split하고 각 요소를 정수로 변환하므로 O(n)입니다.
  2. 최소값과 최대값 탐색
    • 배열을 순회하면서 최소값과 최대값을 계산하므로 O(n)입니다.
  3. 총 시간 복잡도
    • O(n) + O(n) = O(n)으로, 입력 크기에 선형적으로 비례합니다.

구현 코드

function solution(s) {
  const numbers = s.split(" ");

  const { min, max } = numbers.reduce(
    (a, c) => ({
      min: Math.min(a.min, c),
      max: Math.max(a.max, c),
    }),
    { min: Infinity, max: -Infinity }
  );

  return `${min} ${max}`;
}

검색 태그