티스토리 뷰

 

문제를 해결하기 위한 조건을 정리해보았다.

 

1. 각 음식 종류별로 두 선수가 동일하게 먹을 수 있는 음식 개수
2. 각 음식을 배치하는데 필요한 문자열 생성
3. 생성된 문자열을 중앙의 '0'을 기준으로 좌우 배치

 

function solution(food) {
    let left = "";
    let right = "";

    for (let i = 1; i < food.length; i++) {
        const count = Math.floor(food[i] / 2);
        if (count > 0) {
            left += i.toString().repeat(count);
        }
    }

    right = left.split('').reverse().join('');
    return left + "0" + right;
}

 

더 간결한 코드는 다음과 같다.

 

다른 사람의 코드

function solution(food) {
    let res = '';
    for (let i = 1; i < food.length; i++) {
        res += String(i).repeat(Math.floor(food[i]/2));
    }

    return res + '0' + [...res].reverse().join('');
}

 

로직은 같지만 문자열 연결 방식에 차이가 있다.

 

이 코드에서는 res라는 문자열 변수에 좌측 문자열을 모두 저장하고,

그 좌측 문자열을 뒤집어 최종 문자열을 구한다.

 

이 코드가 더 간결하며 중간 변수 없이 res 하나로 좌우측 문자열

처리하기 때문에 더욱 간결하다.

 

문자열 처리 방식 역시 차이가 나타나는데,

[...res].reverse().join('')

이 코드에서는 스프레드 연산자를 사용해 배열을 변환하고 다시 조합하는 반면,

이전 코드에서는 'split('')'을 사용해 문자열을 배열로 변환하고 다시 문자열로 조합한다.

left.split('').reverse().join('')
댓글