코딩테스트

; 을 안쓰면 일어나는 일...(split과 구조분해할당 에서 벌어진 일)

GABOJOK 2023. 9. 26. 23:59

 

 

다른 사람의 풀이를 확인하다가 구조분해할당을 이용해서 문제를 푼 코드를 봤다.

한번 따라 풀어보려고 했는데, 계속 오류가 났다.

이상해서 답안을 복사해서 비교해 봤는데 다른게 없었는데도 계속 오류가 났고, 

답안의 코드는 정상으로 작동했다. 

 

🧐

 

뭔가 이상해서 다시 찬찬히 살펴봤는데

세미클론이 있고 없고의 차이가 있었다. 

 

 

function solution(my_string, num1, num2) {

    my_string = my_string.split('');
    [my_string[num1], my_string[num2]]=
        [my_string[num2], my_string[num1]]
    return my_string.join('')
    
}

 

결과는 정말 하늘과 땅차이 였는데

세미클론이 없는 경우에는 

return 값으로  num1과 num2만 출력 되었다. 

 

의도했던건 num1과 num2를 바꿔서 넣어주는 것이기 때문에 정말 의아했는데

이게 바로 세미클론 때문이라는것.....

 

 

 

function solution(my_string, num1, num2) {

    my_string = my_string.split('');
    [my_string[num1], my_string[num2]]=
        [my_string[num2], my_string[num1]]
    return my_string
    //결과값
    //my_string에서 num1과 num2를 바꾼 배열이 출력
    
}

 

 

 

function solution(my_string, num1, num2) {

    my_string = my_string.split('')
    [my_string[num1], my_string[num2]]=
        [my_string[num2], my_string[num1]]
    return my_string
    //결과값
    //[num1에 해당하는 글자, num2에 해당하는 글자]
    
}

 

 

근데 단순히 .split만 사용해서 세미클론을 붙이고 안붙이고는 차이가 없었다. 

function solution(my_string, num1, num2) {

    my_string = my_string.split('');
    return my_string
    //결과값
    //배열에 하나하나 담긴 my_string이 나옴
    
}

 

function solution(my_string, num1, num2) {

    my_string = my_string.split('')
    return my_string
    //결과값
    //똑같이 배열에 하나하나 담긴 my_string이 나옴
    
}

 

 

잊지말자.

세미클론 꼭 붙이기!!!