최대 1 분 소요

Programmers의 푸드 파이트 대회라는 문제를 다 같이 풀어보았습니다.




📖 문제

image


✏️ 나의 풀이

def solution(food):
    answer = ''
   
    k = 0
    eat = ''
    for i in food: 
        if k == 0:
            pass
       
        eat += str(k) * (i // 2)
        k += 1
   
    answer = eat + '0' + eat[::-1]
    return answer
  1. food의 가장 첫 번째 원소는 항상 물이기에 k=0일 때는 pass
  2. 이후 음식의 종류는 1, 2, 3, … 순서대로 올라가기에 k+=1을 하여 음식의 종류를 할당
  3. 문자열 * 정수를 하는 경우 문자열이 정수 크기 만큼 반복되므로 이를 이용해 왼쪽 사람이 먹는 음식 순서를 나열
  4. 음식 개수의 경우 2로 나눈 값의 몫을 이용해 각자 음식별로 먹어야하는 개수를 구함
  5. 가운데 물인 0을 넣어주고, [::-1]를 이용해 오른쪽 사람이 먹는 음식 순서를 나열한 후 더해줌


💡 느낀점

  1. 다른 스터디원들은 ''.join.reversed()를 이용하여 5번 과정을 해결하였는데, 또 하나의 방법을 알게되었다.
  2. 한 스터디원은 음식 개수를 나누어 줄 때 홀수와 짝수를 나누어 계산하였는데, 코드는 길어지지만 조금 더 확실하고 가독성이 좋았던 것 같다.





잘못된 내용이나 피드백은 언제나 환영입니다.
출처 : 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

업데이트:

댓글남기기