푸드 파이트 대회

NJW·2023년 3월 26일
0

코테

목록 보기
143/170

문제 설명

food 배열이 주어지는 데, 이때 food[i]는 음식 i가 food[i]만큼 주어졌다는 것을 의미한다. 여기서 i가 0일때는 물이고 food[0]은 무조건 1이다.

문자열 가운데 0을 두고 대칭으로 숫자 문자열을 구하라는 문제다.

문제 풀이

첫 번째 접근

먼저 각 대회의 음식을 개수가 홀수이면 하나 빼주는 식으로 짝수로 맞춰주었다. 그리고 짝수로 맞춰준 값에다가 2를 나눠서 한쪽에 둘 수 있는 음식의 개수를 구했다. 다음에는 해당 음식을 구한 수만큼 곱해서 정답에 붙여줬다.

다음에 0을 붙이고 바뀐 음식을 넣어줘야 하는데, 일단 0이 없는 문자열을 역으로 붙여야 하니 tmp에다가 현재 음식 배열을 넣었다.

그리고 0을 붙이고 tmp를 reversed해서 붙여줬다.

다른 사람의 풀이

  1. 배열에 짝수 값을 넣지 말고 food[i]//2를 이용해 붙일 수도 있다.
  2. 역방향 배열을 reversed가 아닌 문자열[::-1]로 만들어 줄 수 있다.

코드

Python

def solution(food):
    answer = ''
    food_count = len(food)
    tmp = ''
    
    for f in range(len(food)):
        #일단 모든 대회의 음식은 짝수로 맞춰줘야 한다.
        if food[f] % 2 != 0:
            food[f] -= 1
        
        #한쪽에 넣을 수 있는 음식의 개수
        count = int(food[f]/2)
        #오른쪽에 해당 음식을 개수만큼 붙여 준다.
        answer += (str(f)*count)
    
    # 0이 없는 문자열이 필요하니 tmp에다가 미리 구한 값을 옮겨주고
    tmp = answer
    # 정답에 0을 붙여준다.
    answer += '0'
    # 정답에 tmp에 넣어줬던 문자를 거꾸로해서 넣어준다.
    answer += "".join(reversed(tmp))

    return answer
profile
https://jiwonna52.tistory.com/

0개의 댓글