728x90
문제 설명
문자열 s에는 공백으로 구분된 여러 숫자가 저장되어 있습니다. 이 숫자들 중 최소값과 최대값을 찾아, 이를 "(최소값) (최대값)" 형태의 문자열로 반환하는 함수를 작성하세요.
제한 조건
- s는 공백으로 구분된 두 개 이상의 정수를 포함합니다.
해결 방법
알고리즘: 순차 탐색
- 문자열 분리 및 변환
- 문자열 s를 공백 기준으로 분리한 후, 각 요소를 정수로 변환하여 배열로 만듭니다.
- 최소값과 최대값 탐색
- 배열을 순회하며 각 요소를 비교해 최소값과 최대값을 갱신합니다.
- 순차 탐색 방식으로 효율적으로 최소값과 최대값을 동시에 계산합니다.
- 결과 반환
- 최소값과 최대값을 공백으로 구분된 하나의 문자열로 반환합니다.
시간 복잡도
- 문자열 분리 및 변환
- 문자열을 split하고 각 요소를 정수로 변환하므로 O(n)입니다.
- 최소값과 최대값 탐색
- 배열을 순회하면서 최소값과 최대값을 계산하므로 O(n)입니다.
- 총 시간 복잡도
- 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}`;
}
'알고리즘' 카테고리의 다른 글
[Javascript] 프로그래머스 - 점프와 순간 이동 (0) | 2025.01.04 |
---|---|
[Javascript] 프로그래머스 - 피보나치 수 (0) | 2025.01.04 |
[Javascript] 프로그래머스 - 뒤에 있는 큰 수 찾기 (0) | 2025.01.04 |
[Javascript] 프로그래머스 - 대충 만든 자판 (0) | 2025.01.04 |
[Javascript] 프로그래머스 - 가장 가까운 글자 (0) | 2025.01.03 |