4월 20일 오늘의 알고리즘
1.같은 숫자는 싫어
문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
입출력 예
arr | answer |
---|---|
[1,1,3,3,0,1,1] | [1,3,0,1] |
[4,4,4,3,3] | [4,3] |
나의 풀이
function solution(arr){
let newArr = []
for (let i = 0; i< arr.length; i++){
if (arr[i]!== arr[i+1]){
newArr.push(arr[i])
}
}return newArr
}
새로운 배열을 하나 선언하고 배열의 앞요소와 뒤의 요소가 같지 않을 경우 새로운 배열에 삽입해 준다.
다른사람의 풀이
function solution(arr)
{
var answer = [];
for(var i = 0; i<arr.length; i++){
if(arr[i] == arr[i+1]){
continue;
}else{
answer.push(arr[i])
}
}
return answer;
}
=>나와 풀이법은 같지만 continue를 사용한 경우
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
=> filter함수를 사용하여 한줄로 풀이
나의 경우 항상 for문을 사용하는 경향이 있는데 앞으로 다양하게 함수를 활용할 필요성이 있다.
2.문자열 내림차순으로 배치하기
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
str은 길이 1 이상인 문자열입니다.
입출력 예
s return
"Zbcdefg" "gfedcbZ"
function solution(s) {
return (s.split("").sort().reverse().join(""))
}
배열에 먼저 담고 정렬하고 뒤집은 다음 join!!! 만족할만한 풀이었다ㅎㅎ
String.prototype.split()
Array.prototype.sort()
Array.prototype.reverse()
Array.prototype.join()
Author And Source
이 문제에 관하여(4월 20일 오늘의 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jeongmin1625/4월-20일-오늘의-알고리즘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)