[프로그래머스] Lv.1 푸드 파이트 대회 Python

콩이·2024년 1월 25일

코딩테스트 Python

목록 보기
3/13

📍 문제 설명

📍 풀이 point

1) 음식은 무조건 짝수 개로 되어야 배식 가능하기 때문에 우선 2로 나누고 몫을 구한다.

2) 해당 몫은 한 사람이 먹을 수 있는 음식의 수를 의미한다.

3) 따라서 해당 번호의 음식의 수 * 몫을 하여 음식 순서에 따라서 한 사람이 먹는 음식의 수 문자열을 만든다.

4) 그 후 물을 붙이고(문자열에 0을 붙이고) 3번 과정에서 만든 문자열을 거꾸로하여 붙여준다(다른 사람이 먹는 음식).

def solution(food):
    result = ""
    for i in range(1,len(food)):
        d = food[i] // 2
        result+= str(i) * d   
        
    result = result + "0"
    
    result2 = list(result)
    
    for j in range(len(result2)-2,-1,-1):
        result2.append(result2[j])  
        
    return ("").join(result2)

나는 물에 도달하기 전(0이 나오기 전)까지의 부분을 완성한 뒤 0을 붙이고 완성한 부분을 거꾸로 붙여 나머지 반을 완성하는 방법을 사용하였다.

코드를 조금 더 간결하게 만들고 싶어 아래 부분 다섯 줄을 한 줄로 줄여 다시 작성했다.

def solution(food):
    result = ""
    for i in range(1,len(food)):
        d = food[i] // 2
        result+= str(i) * d
        
    return result + "0" + ''.join(list(result)[::-1])  # 위 코드를 한줄로 간결하게!

0개의 댓글