티스토리 뷰

 

2022.11.25

프로그래머스 스쿨 Lv01. 푸드 파이트 대회 


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🚀 문제 파악

* 대회는 1대1로 대결
* 대결마다 음식의 종류와 양 변경
* 대결 진행 방식
  ** 음식 일렬 배치하고, 중앙에는 물 배치
  ** 양 쪽 끝에서부터 음식 섭취 시작
  ** 물을 먼저 먹은 선수가 승리
* 대회 공정성을 위해 음식의 종류 양 동일하게
* 칼로리가 낮은 음식을 선 배치
* 대회에 사용하지 않는 음식도 존재

*[참고] food 배열은칼로리가 낮은 순으로 정렬되어 있다

* (예) 3가지의 음식이 준비(칼로리순으로 번호 부여)
** 1번음식: 3개 / 2번음식: 4개 / 3번음식: 6개 / 0번음식: 1개(물)
** 순서 배치: 1223330333221

 

 

🚀 문제 해결

1. food[0] 은 물에 해당한다

2. food[0]을 제외한 배열의 값을 모두 2로 나눈다.

   * 2로 나눈 몫만큼 left 배열에 push한다.

3. left배열을 구한 다음, reverse()해 right 배열을 구한다 

4. join()을 사용해 배열 left, 0, 배열 right 순으로 String을 만든다

 

 

🚀 통과 코드

function solution(food) {
	// 필요한 변수 선언 
    var answer = '';
    var [left, right] = [[], []];
    
    // left 배열 구하기
    for(var i = 1; i < food.length; i++){
        var cnt = parseInt(food[i]/2);
        for(var j = 0; j<cnt; j++){
            left.push(i);            
        }
    }
    
    right = left.slice().reverse();                 // left 배열을 복사한 후, reverse()
    var res = [ ...left, 0, ...right];              // left, 0, right를 하나의 배열로 만들기
    answer = res.join('');    
    
    return answer;
}

 

 

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday