본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 푸드 파이트 대회

by 코드뭉치 2023. 5. 19.

푸드 파이트 대회

 

프로그래머스

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

programmers.co.kr

 

1. 구해야 하는 것
    양끝이 칼로리가 낮은 순으로 배치된 문자열을 반환(물 이외에 홀수개면 버림)
2. 1을 구하기 위해 필요한 것
    2로나눈 몫만큼 인덱스번호를 반복해서 문자열에 집어넣기
    reversed? [::-1]? > 리스트로 만들어야?
3. 그 외 고려해야 할 사항
    문자열의 중앙은 0으로 고정
    문자열은 1333445560655443331 이런식으로 좌우대칭

 

 

문자열은 0을 기준으로 대칭이므로 왼쪽만 구해서 뒤집어준다.

answer = []
# 0번째 원소는 무조건 2로 나눈 몫이 0
for i in range(len(food)):  # i = 0, 1, 2, 3
    # 2로 나눈 몫을 사용해서 물을 기준으로 왼쪽 절반의 리스트 만들기
    a = food[i] // 2
    for _ in range(a):
        answer.append(i)

# 접합 수술
answer = answer + [0] + answer[::-1]
result = "".join(map(str, answer))
print(result)

 

 

리스트 컴프리헨션을 이용한 코드 줄이기

def solution(food):
    a = [f'{i}'*(food[i]//2) for i in range(len(food))]
    answer = "".join(a + ['0'] + a[::-1])
    return answer

댓글