오랑우탄의 반란

프로그래머스 | 푸드 파이트 대회 (Python3) 본문

PYTHON/프로그래머스

프로그래머스 | 푸드 파이트 대회 (Python3)

5&2 2024. 7. 16. 13:51
반응형

 

오늘도 오랑이는 문제를 풉니다. 

 

푸드 파이트 대회

풀이 과정

우선 1~len(food)의 숫자 i 에 대해서 food[i] 번 음식이 i 번 반복되도록 하는 패턴을 짜줍니다. 

food[i]을 둘로 나눈 몫만큼 i 를 문자열로 변환해서 곱해주면 됩니다.

str(i)*(food[i]//2)

 

이후 반복문에 넣어보면 아래와 같이 우리가 원하는 패턴의 반이 리스트 형식으로 출력됩니다. 

 

이때 이걸 뒤집은 형태의 리스트와 합쳐주면 되는데, 중간에 0을 넣고 싶은 것이지요.

for i in range(1,len(food)):
        temp.append(str(i)*(food[i]//2))
    temp += temp[::-1]
    temp.insert(len(temp)//2,'0')

 

이때 해당 부분이 for 반복문 안에 들어가지 않도록 주의합니다. 

 

마지막으로 리스트를 조인해줘서 answer 로 출력되게 하면 됩니다. 

 

최종 코드

def solution(food):
    answer = ''
    temp = []
    for i in range(1,len(food)):
        temp.append(str(i)*(food[i]//2))
    temp += temp[::-1]
    temp.insert(len(temp)//2,'0')
    answer = "".join(temp)
    return answer

 

리스트 temp 대신 문자열 temp 를 사용하면 풀이가 조금 더 간단해집니다.

answer 에 반복된 숫자들의 문자열을 적재해준 후, temp 는 이 문자열 끝에 '0' 을 붙인 값으로 저장해줍니다.

이후 return에서 temp와 answer 의 역순을 합쳐서 출력되도록 합니다. 

def solution(food):
    answer = ''
    temp = ''
    for i in range(1,len(food)):
        answer += str(i)*(food[i]//2)
    temp = answer + '0'
    return temp+answer[::-1]

 

 

 

오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~

 

 

 

프로그래머스

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

programmers.co.kr

반응형