배열 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의 크기 : 1,000,000 이하의 자연수
• 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
function solution(arr){
let newArray = []
for(i=0; i<arr.length; i++){
if(arr[i] !== arr[i+1]){
newArray.push(arr[i])
}
}
return newArray
}
// 해설
// 1. 조건에 해당되는 수를 넣을 빈배열 준비
// 2. for문을 돌아서 i=0이고 받은 배열의 길이만큼 반복문을 돔
// 3. 그래서 배열의[i]번째와 배열의[i+1] 숫다가 다르면 빈배열에 push
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
• n은 1 이상 100,000,000 이하인 자연수입니다.
function solution(n) {
return
parseInt(n.toString(3).split('').reverse().join().replaceAll(',',''),3)
}
// 해설
// 1. toString()은 숫자를 문자열로 반환 하는데 이때 toString()에 반환을 원하는 진법을 넣으면 됨(그러면 문자열 반환)
// 2. reverse()메소드를 사용하려면 배열로 만들어야해서 split('')으로 각각을 배열에 반환 후 배열을 반전 시킴
// 3. 그리고 배열 각각의 요소를 합친 후 모든 ,를 ''대체
// 마지막으로 parseInt()는 특정 진수의 정수를 반환함!
// 첫번째 인자는 앞서 1-3번까지의 과정을 반복한 문자열
// 두번째 인자는 3진법으로 했기 때문에 두번째 인자로 3을 넣어줌!
오늘은 첫번째 문제에서 좀 고전한거 빼고는 풀만했다! parseInt()와, toString()의 부가적인 기능을 알게 되서 신기... 다음에 기억했다가 꼭 다시 써먹어야지!