[20230224_프로그래머스 알고리즘_Lv.1]

YunTrollpark·2023년 2월 24일
0

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의 크기 : 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

2. 3진법 뒤집기

문제 설명

자연수 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()의 부가적인 기능을 알게 되서 신기... 다음에 기억했다가 꼭 다시 써먹어야지!

profile
코딩으로 세상에 이야기하는 개발자

0개의 댓글