메모리: 33.5 MB, 시간: 0.09 ms
코딩테스트 연습 > 연습문제
정확성: 100.0
합계: 100.0 / 100.0
2023년 11월 5일 15:4:59
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
s | return |
---|---|
"1 2 3 4" | "1 4" |
"-1 -2 -3 -4" | "-4 -1" |
"-1 -1" | "-1 -1" |
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
간만에 코딩테스트 문제를 시작했다. 맨날 에러만 고치고 있다가 자바스크립트 메서드 이용해서 풀이 하려고 하니 깡깡이가 된 느낌이다,,, ㅋㅋㅋㅋㅋ 아래는 내가 작성한 코드.
function solution(s) {
var answer = [];
const a = s.split(' ').map(Number).sort((a, b) => a - b);
const b = a.length - 1;
answer.push(a[0], a[b]);
return answer.join(" ");
}
숫자들 사이에 띄어쓰기가 되어있어 split(' ')메서드로 배열로 만들어주면서 띄어쓰기 된 부분을 없애준다. 또한 .map(Number)를 이용해 각 요소를 숫자들로 바꿔주고, sort((a, b) => a - b)메서드를 활용해 낮은 수부터 높은 수로 오름차순 정렬해주었다.
answer.push(a[0], a[b])로 배열에 a와 b를 추가해준뒤 join(" ")메서드로 배열을 풀고 요소 사이에 띄어쓰기를 해서 완성했다.
아래는 스터디원이 작성한 코드.
function solution(s) {
const arr = s.split(" ").map(Number);
return
`${Math.min(...arr)} ${Math.max...arr)}` ;
마찬가지로 split(" ") 메서드로와 map을 돌려서 숫자로 만들어주는 것까지는 같은데, 깔끔하게 Math.min(..arr)로 배열 내에 최솟값과 Math.max(...arr)로 최댓값을 구한 다음 탬플릿 리터럴로 두개를 합쳐주었다.
훨씬 간결한 코드다. 굳어버린 뇌도 녹여줄 겸 매일매일 코딩테스트 문제 하나씩 풀어봐야겠다!