[JS] Programmers 134240 푸드 파이트 대회

서연주·2023년 7월 11일
0

Algorithm

목록 보기
19/25

썸네일_제목은 PRGM 134240 푸드 파이트 대회, 부제목은 JavaScript, 분류는 Algorithm

'푸드 파이트 대회'

Programmers '푸드 파이트 대회' 문제 보러가기

풀이 코드

food 배열을 순회하며 수웅이가 먹을 음식의 배치를 먼저 작성하고,
해당 배치를 뒤집어 0과 함께 앞서 작성된 문자열에 덧붙였다.

function solution(food) {
    var answer = '';
    var reversed ='';
    // food 배열을 순회한다. 
    for(let i=1;i<food.length;i++){
        // 개수 내 가장 큰 짝수의 절반 만큼 음식 수를 표시한다
        for(let j=0;j<Math.floor(food[i]/2); j++){
            answer = answer.concat(String(i));
        }
    }
    
    // 입력한 배열을 복사하여 reverse한다
    reversed = answer.split("").reverse();
    reversed = reversed.join("");
    // 입력한 배열에 0을 입력하고, reverse된 배열을 붙인다.
    answer = answer.concat('0');
    answer = answer.concat(reversed);
    return answer;
}

📌 split() - split(separator?, limit?)
; String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.

  • separator가 빈 문자열('')일 시, str의 각각의 문자가 배열의 원소 하나씩으로 변환된다.
  • 주어진 문자열을 separator마다 끊은 부분 문자열은 담은 배열을 반환한다.

📌 join() - arr.join([separator])
; 배열의 모든 요소를 연결해 하나의 문자열로 만든다.

  • separator
    생략 시, 배열의 요소들이 쉼표로 구분된다.
    빈 문자열('')일 시, 모든 요소들이 사이에 아무 문자도 없이 연결된다.
  • 배열의 요소를 모두 연결한 하나의 문자열을 반환한다.

📌 concat() - array.concat([value1[, value2[, ...[, valueN]]]])
; 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다.

  • 기존 배열을 변경하지 않는다.
  • 추가된 새로운 배열을 반환한다.
  • value1 ~ valueN 인자 생략 시, 기존 배열의 얕은 복사본 반환

📌 reverse() - a.reverse()
; 배열의 순서를 반전한다.

  • 순서가 반전된 배열을 반환한다.
  • 호출한 배열을 반전하고 원본 배열을 변형하여 그 참조를 반환한다.

개선하기

*Won-hyeok Jung 님의 코드를 참고하였습니다.

  1. for문 대신 repeat()의 callback

📌 repeat() - str.repeat(count);
; 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.

  • count: 문자열을 반복할 횟수
  1. split() 대신 전개 연산자
  • [...strings] ➡️ 문자열의 각 문자가 요소인 배열이 된다.
function solution(food) {
    var answer = '';
    
    // food 배열을 순회한다. 
    for(let i=1;i<food.length;i++){
        // 개수 내 가장 큰 짝수의 절반 만큼 음식 수를 표시한다
        answer +=String(i).repeat(Math.floor(food[i]/2));
    }
    
    // 입력한 배열에 0을 입력하고, reverse된 배열을 붙인다.
    return answer+'0'+[...answer].reverse().join('');
}

참고 자료

profile
pizz@ttang

0개의 댓글