본문 바로가기
기초다지기/JS 코딩테스트

[Lv0] 수 조작하기 2

by 김빵그 2023. 7. 16.

문제 설명

정수배열 numLog 가 주어집니다.

처음에 numLog[0] 에서부터 시작해 "w","a","s","d" 로 이루어진 문자열을 입력으로 받아 순서대로  다음과 같은 조작을 했다고 합시다 

  • "w" : 수에 1을 더한다  
  • "s" : 수에 1을 뺀다 
  • "d" : 수에 10을더한다
  • "a" : 수에 10을  뺀다

그리고  매번조작을 할때마다 기록한 정수 배열이 numLog입니다

즉 numLog[i]는  numLog[0]로부터 총 i번의  조작을 가한 결과가 저장되어있습니다

주어진 정수 배열 numLog에 대한 조작을 위해  입력받은 문자열을 return 하는 solution 함수를 완성시켜라

 


답 1

function solution(numLog) {
    const convert = {
        '1': 'w', '-1': 's', '10': 'd', '-10': 'a'
    };

    return numLog.slice(1).map((v, i) => {
        return convert[v - numLog[i]]
    }).join('')
}
  • slice(1) :  numLog 배열의 첫번째 요소를 제외한 나머지 요소를 새로운 배열로 반환한다
  • map : v 현재 요소 , i 인덱스 
  • v - numLog[i] 현재 요소와 이전 요소의 차이를 계산하여 convert 해당하는 문자열을 반환 
  • join : 계산된 문자열을 결합

답 2

function solution(numLog) {
  let array = [...numLog]
  let answer = [];
  for(let i=0;i<array.length;i++){
    switch(array[i+1]-array[i]){
      case 1:
        answer.push('w')
        break;
      case -1:
        answer.push('s')
        break
      case 10:
        answer.push('d')
        break;
      case -10:
        answer.push('a')
        break;
    }
}
return answer.join('');
}

'기초다지기 > JS 코딩테스트' 카테고리의 다른 글

[Lv0] js 팩토리얼  (0) 2023.07.18
[Lv0] 등차수열  (0) 2023.07.17
[js] 2차원 배열  (0) 2023.07.02
[LV0] 특정 문자 a로 만들기  (0) 2023.06.03
Lv0 배열의 원소만큼 추가하기  (0) 2023.05.21