food 리스트는 각 음식의 개수를 나타냅니다. 예를 들어, food = [1, 3, 4, 6]이면, 1번 음식은 3개, 2번 음식은 4개, 3번 음식은 6개를 의미합니다.2로 나눈 몫 만큼만 사용 가능하며, 남은 한 개는 사용되지 않습니다.left: 왼쪽 선수에게 배치될 음식들을 문자열로 저장.right: left의 반대 방향인 오른쪽 선수에게 배치될 음식들을 저장. left를 반전하여 생성.answer: 최종적으로 left + '0' + right 형식으로 만들어 반환할 결과 문자열.for문을 사용해 food 리스트의 1번 인덱스부터 각 음식의 절반을 left에 추가합니다.left의 내용을 반전시켜 right를 생성합니다.left + '0' + right를 합쳐 반환합니다.def solution(food):
left = '' # 왼쪽 대결자를 위한 음식 배치
right = '' # 오른쪽 대결자를 위한 음식 배치 (left의 반전)
# 1번 인덱스부터 시작하여 각 음식의 절반을 left에 추가
for i in range(1, len(food)):
left += str(i) * (food[i] // 2)
# left 문자열을 뒤집어서 right에 저장
right = left[::-1]
# 중앙에 물을 추가
left += '0'
# left + 0 + right 형식으로 반환
return left + right
# 테스트 실행
food = [1, 3, 4, 6]
print(solution(food)) # 출력 예시: "1223330333221"
문제 이해: 두 명의 선수가 중앙의 물을 향해 대결하며 음식을 먹어가며 다가간다. 칼로리가 낮은 음식부터 대칭으로 배치되며, 중앙에는 항상 물이 위치한다.
자료형 선언:
left와 right는 문자열 형태로 음식을 배치하며, right는 left를 반전한 값이다.left와 right의 중간에 항상 물이 위치한다.논리 구현:
for문을 사용하여 food 리스트의 각 요소를 순회하며 음식의 절반만큼 문자열에 추가한다.right는 left의 반전된 문자열이다.코드 구현: for문과 문자열 조작을 통해 원하는 형식의 대칭 구조를 생성하고, 최종적으로 반환값을 출력한다.
이러한 접근 방식을 통해 주어진 조건에 맞는 대칭적인 음식 배치와 중앙 물 위치를 구현할 수 있습니다.