1. 구해야 하는 것
양끝이 칼로리가 낮은 순으로 배치된 문자열을 반환(물 이외에 홀수개면 버림)
2. 1을 구하기 위해 필요한 것
2로나눈 몫만큼 인덱스번호를 반복해서 문자열에 집어넣기
reversed? [::-1]? > 리스트로 만들어야?
3. 그 외 고려해야 할 사항
문자열의 중앙은 0으로 고정
문자열은 1333445560655443331 이런식으로 좌우대칭
문자열은 0을 기준으로 대칭이므로 왼쪽만 구해서 뒤집어준다.
answer = []
# 0번째 원소는 무조건 2로 나눈 몫이 0
for i in range(len(food)): # i = 0, 1, 2, 3
# 2로 나눈 몫을 사용해서 물을 기준으로 왼쪽 절반의 리스트 만들기
a = food[i] // 2
for _ in range(a):
answer.append(i)
# 접합 수술
answer = answer + [0] + answer[::-1]
result = "".join(map(str, answer))
print(result)
리스트 컴프리헨션을 이용한 코드 줄이기
def solution(food):
a = [f'{i}'*(food[i]//2) for i in range(len(food))]
answer = "".join(a + ['0'] + a[::-1])
return answer
'코딩 테스트 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 대충 만든 자판 (0) | 2023.06.01 |
---|---|
[알고리즘] 프로그래머스 - 과일 장수 (0) | 2023.05.19 |
[알고리즘] 프로그래머스 - 소수 찾기 (0) | 2023.05.18 |
[알고리즘] 프로그래머스 - 카펫 (0) | 2023.05.09 |
[알고리즘] 프로그래머스 - 괄호 회전하기 (0) | 2023.05.08 |
댓글