개발 기록 남기기✍️

[프로그래머스] 인덱스 바꾸기 본문

코딩 테스트 연습

[프로그래머스] 인덱스 바꾸기

너해동물원 2022. 12. 26. 16:15

🗒️ 문제 설명

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

 

⚠️ 제한 사항

  • 1 < my_string의 길이 < 100
  • 0 ≤ num1, num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1  num2

 

👀 입출력 예

my_string num1 num2 result
"hello" 1 2 "hlelo"
"I love you" 3 6 "I l veoyou"

 


❇️ 나의 풀이

  • 먼저 문자열을 전개한다.
  • 인덱스가 num1인 값을 배열에서 splice(num1,1)로 잘라낸다.
  • 이미 num1에 해당하는 문자를 잘라낸 상태인 배열에서 인덱스가 num2인 값을 배열에서 splice(num2-1,1)로 잘라낸다.
  • splice로 num1 인덱스에 잘라냈던 num2 값을 붙여넣고, num2 인덱스에 잘라냈던 num1 값을 붙여넣는다.
  • 배열을 .join('')로 다시 String으로 만들어준다.
function solution(my_string, num1, num2) {
    var arr = [...my_string];
    var spliceResult1 = arr.splice(num1,1);
    var spliceResult2 = arr.splice(num2-1,1);
    arr.splice(num1,0,...spliceResult2);
    arr.splice(num2,0,...spliceResult1);
    return arr.join('');
}

 

 

✍️ 리뷰

  • 더 쉬운 방법이 있을 것 같지만, 일단 스스로 문제를 풀 수 있어야 한다는 생각에 긴 코드를 만들어냈다.
  • 근데 생각해보니 splice로 일일이 붙여넣기보다.. 변수에 num1, num2 값을 각각 할당하고, 해당 배열 인덱스에 재할당하면 되지 않나?
  • 이런 바보같은...
function solution(my_string, num1, num2) {
  let arr = my_string.split("");
  [arr[num1], arr[num2]] = [arr[num2], arr[num1]];
  return arr.join("");
}

✔️ 제발 빨리 풀 생각하지말고.. 심지어 이거 완전 기초 개념이잖아!! 정신 똑바로 차리고 문제 보자 제발!!