level1_푸드 파이트 대회
2024. 8. 11. 22:26ㆍ파이썬_알고리즘(코딩테스트)/level1


내가 제출한 코드
def solution(food):
answer = ''
for i in range(1, len(food)):
answer += str(i) * (food[i] // 2)
return answer + "0" + answer[::-1]
- for i in range(1, len(food))
- 리스트의 두번째 요소(food[1])부터 마지막 요소까지 반복을 한다.
- answer += str(i) * (food[i] // 2)
- i를 문자열로 변환한 후, food[i] // 2 만큼 반복하여 answer 문자열에 추가한다.
- return answer + "0" + answer[::-1]
- answer + "0"은 answer 문자열에 0을 추가한다(중앙에 물을 배치해야하기 때문이다)
- answer[::-1]는 answer 문자열을 역순으로 뒤집는다.
- 최종적으로 좌우 대칭인 형태의 문자열을 생성한다.
다른 사람이 제출한 코드
def solution(food):
answer = "0"
for i in range(len(food)-1, 0, -1):
c = int(food[i] / 2)
while c > 0:
answer = str(i) + answer + str(i)
c -= 1
return answer
- answer = "0"
- 문자열의 중심에 위치할(물 배치) 초기값 "0"을 나타낸다.
- for i in range(len(food)-1, 0, -1):
- i는 food 리스트의 끝에서 두번째 요소부터 첫 번째 요소까지 역순으로 반복한다. (끝에서부터 차례대로 인덱스를 감소시킨다)
- c = int(food[i] / 2):
- 현재 food[i] 값을 2로 나눈 몫을 c에 저장한다.
- 현재 인덱스 i에 해당하는 숫자가 몇 번 반복 될지를 결정한다.
- while c > 0:
- c가 0보다 클 동안 반복한다.
- answer = str(i) + answer + str(i)
- 현재 인덱스 i를 문자열로 변환하여, 기존 answer 문자열의 양쪽에 추가한다.
- c -= 1
- c에 1을 빼준다.
- c가 0이 될 때까지 반복을 계속하기 위해서 사용한다.(각 숫자가 몇 번 반복될지를 제어하는 역할)
- c에 1을 빼준다.
- return answer
- 최종적으로 대칭 문자열을 반환한다.
'파이썬_알고리즘(코딩테스트) > level1' 카테고리의 다른 글
| level1_같은 숫자는 싫어 (0) | 2024.08.12 |
|---|---|
| level1_문자열 내 마음대로 정렬하기 (0) | 2024.08.11 |
| level1_K번째수 (0) | 2024.07.01 |
| level1_두 개 뽑아서 더하기 (0) | 2024.06.26 |
| level1_원소들의 곱과 합 (0) | 2024.06.24 |