[문제 출처]
https://school.programmers.co.kr/learn/courses/30/lessons/134240
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
수웅이는 푸드 파이트 대회를 개최했다.
2명의 선수가 대결을 하는데, 이 선수들이 먹을 음식을 배치하여 출력하는 문제이다.
음식은 칼로리 순서대로 주어지며, 각 음식이 몇 개인지 주어진다.
0번 인덱스에 있는 음식은 물이며 항상 1개이다.
예를 들어
food = [1,3, 4, 6]이라면
0번 음식은 물이며, 그다음부터 칼로리가 낮은 순서대로 주어진다.
1번 음식 3개, 2번 음식은 4개, 3번 음식은 6개가 준비되어 있다는 의미다.
이 음식들은 두 선수에게 칼로리가 낮은 순서대로 주어져야 하며, 그 순서와 개수는 동일해야 한다.
문자열이 실제 음식의 배치를 나타낸다고 생각하면,
A선수 '1223330333221' B선수
이렇게 배치된다고 볼 수 있다.
칼로리가 낮은 1번 음식부터 각 선수에게 배치된다.
1번 음식은 3개가 준비되어 있지만 두 선수에게 동일하게 주어져야 하므로 1개는 사용되지 못한다.
가운데는 물이 배치되며 물에 가장 먼저 도달하는 선수가 이기게 된다.
✅소스 코드
두 선수에게 동일하게 음식이 배치되어야 하며 칼로리가 낮은 음식부터 주어져야 하기에
1번 음식부터 2로 나눈 개수만큼 순서대로 배치한다.
왼쪽에 위치한 선수에게 모든 음식이 배치되었다면, 가운데 물을 배치하고,
오른쪽 선수에게도 동일하게 배치하기 위해서 물 옆에 칼로리가 높은 음식부터 배치하여
오른쪽 선수 앞에는 칼로리가 낮은 음식이 배치되게 한다.
def solution(food):
answer = ''
for i in range(1,len(food)):
for j in range(food[i]//2):
answer += str(i)
answer += '0'
for i in range(len(food)-1, 0, -1):
for j in range(food[i]//2):
answer += str(i)
return answer
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 프로그래머스 Lv.1 삼총사 (0) | 2023.03.08 |
---|---|
[python/파이썬] 프로그래머스 Lv.1 콜라 문제 (0) | 2023.03.07 |
[python/파이썬] 프로그래머스 Lv.1 과일장수 (0) | 2023.03.03 |
[python/파이썬] 프로그래머스 Lv.1 문자열 나누기 (0) | 2023.03.02 |
[python/파이썬] 백준 1543 문서 검색 (0) | 2023.02.27 |