🗃️javascript/프로그래머스

A로 B 만들기(Lv.0)[반복문 i번에 조건을 구성하는 변수값이 변경된다면, i+1에는 바뀐 변수값으로 조건을 따짐]

하얀성 2023. 1. 10. 20:34

반복문 i번에 조건을 구성하는 변수값이 변경된다면, i+1에는 바뀐 변수값으로 조건을 따짐

<문제 설명>

 

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 0 < before의 길이 == after의 길이 < 1,000
  • before와 after는 모두 소문자로 이루어져 있습니다.

입출력 예beforeafterresult
"olleh" "hello" 1
"allpe" "apple" 0

입출력 예 설명

입출력 예 #1

  • "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.

입출력 예 #2

  • "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.

<제출 답안>

function solution(before, after) {
    let new_after = after.split("")
    let new_before = before.split("")
    const new_before2 = before.split("")

    for(let i=0; i< new_before2.length; i++){
        if(new_before.includes(new_after[i])){ // 포함되있는지 확인
           let place = new_before.indexOf(new_after[i]) // 위치 포착
                  new_before.splice(place, 1 )

        }
    }
    return new_before == ''? 1: 0
}

 

이 문제를 풀면서 얻은 소득은 

1. 이전 반복문인 i=1에서 splice해서 if의 조건인 배열의 모양이 바뀌었다면, i=2에서는 그 바뀐 배열의 모습을 적용한다

2. [ ](빈 배열)은 null이 아니라  ' '로 조건식을 맞춰줘야 한다는 것.


사실 이렇게 간단한 문제풀이법도 있다. 그런데 이걸 스스로 생각해낸게 아닌 이상, 답을 배껴쓰면 도움이 되나 싶다. (물론 모르면 어쩔수 없겠지만 ㅠ)

function solution(before, after) {
    return before.split('').sort().join('') === after.split('').sort().join('') ? 1 : 0;
}

-> 문자열의 배순서는 sort()를 통해 한다는 것을... 알지만 활용하지 못한..