[프로그래머스] 푸드 파이트

문제 연결

https://school.programmers.co.kr/learn/courses/30/lessons/134240

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr

소스 코드

def solution(food):
    # 딕셔너리에 숫자별 개수 저장
    foods = {}
    for i in range(1,len(food)):
        foods(i) = food(i) // 2

    answer="0"
    # 큰 숫자부터 작은숫자까지 0을 감싸도록 한다
    for tmp in reversed(foods.keys()):
        answer = str(tmp)*foods(tmp) + answer + str(tmp)*foods(tmp)
    return answer

논평

  • 간단한 구현 문제

문제의 상태에 따라 홀수 음식은 버리고 좌우로 배치됩니다.당신은해야합니다.

간단히 말해서 몫을 2로 나눈 값을 0(물)의 좌우에 대고할 수 있어요.

따라서 목록의 두 번째 요소에서 2로 나눈 몫을 사전에 저장합니다.

그리고 0을 중심으로 가장 큰 숫자부터 시작하여 숫자별로 정렬그렇습니다

가장 작은 숫자부터 넣으면 순서가 뒤바뀌고, 왼쪽부터 칼로리 숫자가 먼저 놓인다.

예를 들어 1, 2, 3을 좌우로 배치한다면, 1, 2, 3은 적은 칼로리부터 시작하여 0을 중심으로 배치해야 하며,

‘0’ -> ‘101’ -> ‘2210122’ -> ‘3332210122333’.

우리가 원하는 것

‘0’ -> ‘3330333’ -> ‘22333033322’ -> ‘1223330333221’.

따라서 정답은 가장 큰 수만큼 0의 좌우에 배치해야 합니다.