저는 이 문제를 해석하는데 좀 애를 먹었는데, 처음에 이해했던 내용은 before을 뒤로 정렬해서 after와 같은지를 물어보는 문제인줄 알았는데, 알고보니까 before의 단어와 after을 단어를 비교해서 before의 단어를 조합해 after의 단어로 온전히 만들 수 있는지를 물어보는 문제더라고요.
즉 뒤죽박죽 섞여 있어도 before와 after의 스펠링들이 똑같이 있으면 1을, 하나라도 틀리면 0을 출력해야 하는 문제였습니다....
function solution(before, after) { // before와 after을 배열로 풀어헤쳐서 sort로 오름차순 해준 후 다시 문자열로 합쳐줍니다. let convertedBefore = before.split('').sort().join(''); let convertedAfter = after.split('').sort().join(''); return convertedBefore === convertedAfter ? 1 : 0; // 둘이 같다면 1을, 하나라도 틀리면 0을 반환합니다. }
원래 제가 생각했던 코드 (before를 뒤로 정렬해서 after와 똑같은지를 판별하는 코드)를 참고하시라고 올려놓도록 하겠습니다.
function solution(before, after) { let convertedBefore = before.split('') for(let i = 0 ; i < Math.floor(convertedBefore.length/2) ; i++){ // for의 범위를 배열의 절반으로 지정한 이유는 배열의 첫번째와 마지막번째, 배열의 두번째와 마지막의 전번째 순서대로 섞어주면 배열을 반대로 뒤집는 효과를 줄 수 있기 때문입니다. // 그래서 교환 코드는 아래와 같이 작성했고 for문 범위는 스위칭을 하는 횟수라고 봐주시면 될 것 같습니다. 만약 5의 배열이라고 한다면 짝 없이 하나 남는 가운데는 굳이 안바꿔도 되고, 6의 배열이라고 하면 짝을 맞춰 바꿀 수 있게 됩니다. let tmp = 0; temp = convertedBefore[i] convertedBefore[i] = convertedBefore[(convertedBefore.length - 1) - i] convertedBefore[(convertedBefore.length - 1) - i] = temp; } convertedBefore = convertedBefore.join('') let result = convertedBefore === after ? 1 : 0; return result; }