[lv.1] 푸드 파이트 대회 | 프로그래머스
[lv.1] 푸드 파이트 대회 | 프로그래머스
📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)
✏️ (lv.1) : 푸드 파이트 대회
준비된 음식의 번호와 양을 나타내는 정수 배열 food
가 주어진다. food
는 칼로리가 적은 순서대로 정렬되어있으며 각 원소의 값은 해당하는 음식의 개수를 뜻한다. 가장 칼로리가 작은 1번 음식(물)을 중앙에 배치하고 나머지 음식을 물을 기준으로 대칭으로 배치하되 그 과정에서 남는 음식은 처분한다. 이때 반드시 칼로리가 작은 음식을 물에 가깝게 안쪽에 배치한다.
음식의 배치를 나타내는 문자열을 return하는 solution을 작성하라.
- 2 <=
food
의 길이 <= 9 - 1 <=
food
의 각 원소 <= 1,000 food[0]
는 항상 1이다.- 정답의 길이가 3 이상인 경우만 입력으로 주어진다.
덱(deque)
자료형을 활용하여 각각의 정보를 덱의 head, tail에 삽입하는것으로 문제를 해결한다.
"0"
을 포함한 배열deque
을 선언한다.food
배열을 역순으로 반복하며 로직을 진행한다. 단 물에 해당하는0
은 이미deque
의 원소로 존재하기 때문에 1번 index까지만 반복한다.덱
의 head, tail에 배치할 음식의 양amount
는food[i]
를 2로 나눴을 때의 몫으로 지정한다.- 음식의 번호를 뜻하는 index값
문자열
로 치환한 뒤repeat()
메소드를 이용해amount
만큼 문자열을 곱한다. 스프레드 연산자
를 이용해덱
의 head에 삽입,push()
메소드를 이용해덱
의 tail에 item을 삽입한다.
덱
을join()
메소드를 이용해 문자열로 합쳐서 반환한다.
1 | function solution(food) { |
2 | // deque = new Deque includes "0" |
3 | let deque = ["0"]; |
4 | |
5 | // for item of reversed food |
6 | for (let i = food.length - 1; i > 0; i--) { |
7 | // item = index of item * (amount of item / 2) |
8 | let amount = Math.floor(food[i] / 2); |
9 | let item = String(i).repeat(amount); |
10 | |
11 | // push item at deque.head & deque.tail |
12 | deque = [item, ...deque]; |
13 | deque.push(item); |
14 | } |
15 | |
16 | return deque.join(""); |
17 | } |
18 |
👨💻 관련 포스트
[lv.1] 개인정보 수집 유효기간
[lv.1] 개인정보 수집 유효기간
프로그래머스 lv.1 개인정보 수집 유효기간 풀이 with javascript. 해당 문제에서 한달은 28일로 고정이다. 따라서 today와 privacies 각 원소(개인정보)의 날짜를 년, 월, 일에 각 단위에 해당하는 수 * 28을 수행하여 일 단위로 변환한 후 terms에 해당하는 수를 더해 문제를 해결한다.
2023-05-30
[lv.1] 성격 유형 검사하기 | 프로그래머스
[lv.1] 성격 유형 검사하기 | 프로그래머스
프로그래머스 lv.1 성격 유형 검사하기 풀이 with javascript. javascript의 객체를 이용해 성격 유형(이하 MBTI)별 획득 점수를 기록하고 MBTI의 value를 비교해 문제를 해결한다.
2023-06-01
[lv.2] 주차 요금 계산 | 프로그래머스
[lv.2] 주차 요금 계산 | 프로그래머스
프로그래머스 lv.2 주차 요금 계산 풀이 with javascript. javascript의 객체를 이용해 차량의 입/출차 시간을 기록, 해당 객체를 순회하며 주차시간을 주어진 요금표에 맞게 정산하는 것으로 문제를 해결한다.
2023-06-04
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!