반응형
최댓값과 최솟값
문제 설명(ref)
문자열 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" |
내 코드
Logic
띄여쓰기 단위로 구분을 만들어서
숫자를 정렬하여서 가장 낮은 숫자와 가장 높은 숫자를 추출후
결과값에 맞게 데이터수정후 출력
function solution(s) {
// console.log("s:",s)
// 띄여쓰기 단위로 분리
let arr = s.split(' ');
// console.log("arr:",arr)
// 인자타입을 Number로 변경
for (let i = 0; i < arr.length; i++) {
arr[i] = Number(arr[i]);
}
// console.log("arr:",arr)
// 정렬
arr.sort((a, b) => a - b);
// console.log("arr:",arr)
let answer = '';
// 제일 작은수와 제일 높은 수를 원하는 형태로 출력
answer = `${arr[0]} ${arr[arr.length - 1]}`;
return answer;
}
정확성 테스트
테스트 1 〉 | 통과 (0.16ms, 30.1MB) |
테스트 2 〉 | 통과 (0.12ms, 30MB) |
테스트 3 〉 | 통과 (0.11ms, 29.9MB) |
테스트 4 〉 | 통과 (0.10ms, 30MB) |
테스트 5 〉 | 통과 (0.33ms, 30.2MB) |
테스트 6 〉 | 통과 (0.11ms, 30MB) |
테스트 7 〉 | 통과 (0.07ms, 29.9MB) |
테스트 8 〉 | 통과 (0.12ms, 29.9MB) |
테스트 9 〉 | 통과 (0.10ms, 29.9MB) |
테스트 10 〉 | 통과 (0.14ms, 30.1MB) |
테스트 11 〉 | 통과 (0.08ms, 29.8MB) |
테스트 12 〉 | 통과 (0.15ms, 29.9MB) |
다른 사람 코드1
function solution(s) {
const arr = s.split(' ');
// 나누어서 문자열로 최댓값 최솟값 출력
return Math.min(...arr) + ' ' + Math.max(...arr);
}
Logic
띄여쓰기 단위로 구분을 만들어서
숫자를 정렬하여서 가장 낮은 숫자와 가장 높은 숫자를 추출후
결과값에 맞게 데이터수정후 출력
정확성 테스트
테스트 1 〉 | 통과 (0.06ms, 30MB) |
테스트 2 〉 | 통과 (0.07ms, 29.9MB) |
테스트 3 〉 | 통과 (0.04ms, 30.2MB) |
테스트 4 〉 | 통과 (0.05ms, 30.2MB) |
테스트 5 〉 | 통과 (0.30ms, 30.3MB) |
테스트 6 〉 | 통과 (0.06ms, 29.9MB) |
테스트 7 〉 | 통과 (0.05ms, 30.2MB) |
테스트 8 〉 | 통과 (0.06ms, 30MB) |
테스트 9 〉 | 통과 (0.06ms, 30.1MB) |
테스트 10 〉 | 통과 (0.06ms, 29.9MB) |
테스트 11 〉 | 통과 (0.10ms, 30.2MB) |
테스트 12 〉 | 통과 (0.06ms, 30MB) |
문자열로도 max, min가능
내부적으로 모든 값은 최대값을 찾기 전에 숫자로 변환하려고 시도하며 문자열을 명시적으로 숫자로 변환할 필요가 없습니다.
(단 NaN으로 나오지 않을 경우 가능). ref
다른 사람 코드2
function solution(s) {
// 최솟값 추출
let min = Math.min.apply(null, s.split(' ').map(Number));
// 최댓값 추출
let max = Math.max.apply(null, s.split(' ').map(Number));
var answer = min + ' ' + max;
return answer;
}
Logic
띄여쓰기 단위로 구분을 만들어서
인자의 타입을 숫자로 바꾼 뒤
가장 낮은 숫자와 가장 높은 숫자를 추출후
결과값에 맞게 출력
정확성 테스트
테스트 1 〉 | 통과 (0.07ms, 30MB) |
테스트 2 〉 | 통과 (0.13ms, 29.7MB) |
테스트 3 〉 | 통과 (0.06ms, 29.7MB) |
테스트 4 〉 | 통과 (0.06ms, 30MB) |
테스트 5 〉 | 통과 (0.20ms, 30.3MB) |
테스트 6 〉 | 통과 (0.09ms, 29.9MB) |
테스트 7 〉 | 통과 (0.05ms, 30MB) |
테스트 8 〉 | 통과 (0.07ms, 29.8MB) |
테스트 9 〉 | 통과 (0.06ms, 29.6MB) |
테스트 10 〉 | 통과 (0.10ms, 30MB) |
테스트 11 〉 | 통과 (0.06ms, 29.9MB) |
테스트 12 〉 | 통과 (0.07ms, 29.8MB) |
이런식으로 사용시 배열인자의 최댓값 출력가능. (ref)
Math.max.apply(null, numArray);
map을 통해 type을 숫자로 바꾸는 방법 (ref)
- parseInt는 사용할 수 없음(인자를 하나만 받을수 있기 때문)
['1', '2', '3'].map(Number); // [1, 2, 3]
++refernce
'Algorithm' 카테고리의 다른 글
Algorithm [정렬 : 버블정렬(bubbleSort)] (0) | 2022.06.01 |
---|---|
Algorithm:[정렬 : 정렬별 장단점 및 시간복잡도] (1) | 2022.05.31 |
Algorithm2[공부 : 숫자의 표현] (0) | 2022.05.25 |
Algorithm[공부 : 큰수 만들기] (0) | 2022.05.24 |
Algorithm[공부 : 카펫(carpet)(완전탐색) ] (0) | 2022.05.23 |