코딩테스트 연습 스터디 진행중 입니다. ✍✍✍
Notion : https://www.notion.so/1c911ca6572e4513bd8ed091aa508d67
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12945
풀이
[나의 풀이]
def solution(food):
tmp = []
food.append(food[0])
food.remove(1) # [음식1,음식2,음식3...물] 형태로 변경
length = len(food)
food2 = []
for i in range(length):
if i == length-1 :
tmp.reverse() # [...음식3, 음식2, 음식1]
food2.append(0) # [음식1, 음식2, 음식3..0 = (물)]
break
for j in range(0,int(food[i]/2)):
food2.append(i+1)
tmp.append(i+1)
answer = str(food2 + tmp) # [음식1, 음식2, 음식3..물] + [...음식3, 음식2, 음식1]
answer= answer.replace(',', '') # 문자열로 바꾸기
answer= answer.replace('[', '')
answer= answer.replace(']', '')
answer= answer.replace(' ', '')
return answer
[팀원의 풀이1]
def solution(food):
answer = ''
# 0번째 food 지우기
del food[0]
tmp = ''
# 각 food 절반으로 나눠서 앞 뒤로 배치
# enumerate -> index와 value 값 각각 접근 가능
for idx, cnt in enumerate(food):
# cnt/2 는 cnt를 2로 나누고 소수점 버림
for _ in range(cnt/2):
tmp += str(idx+1)
# food를 대칭이 되도록 str에 더해주기
answer=tmp+str(0)+tmp[::-1]
return answer
[팀원의 풀이2]
def solution(food):
answer = ''
for i in range(1,len(food)):
if food[i]%2 == 0:
answer += str(i)*int((food[i]/2))
else :
answer += str(i)**int(((food[i]-1)/2))
answer = answer + '0' + answer[::-1]
return answer
메모
1.enumerate() 함수
# 예시
for entry in enumerate(['A', 'B', 'C']):
print(entry)
(0, 'A')
(1, 'B')
(2, 'C')
# 시작 인덱스 변경
for i, letter in enumerate(['A', 'B', 'C'], start=101):
print(i, letter)
101 A
102 B
103 C
# 원리
iter_letters = iter(['A', 'B', 'C'])
next(iter_letters)
'A'
next(iter_letters)
'B'
next(iter_letters)
'C'
enumerate_letters = enumerate(['A', 'B', 'C'])
next(enumerate_letters)
(0, 'A')
next(enumerate_letters)
(1, 'B')
next(enumerate_letters)
(2, 'C')
# 2차원 리스트 루프
matrix = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
for r in range(len(matrix)):
for c in range(len(matrix[r])):
print(r, c, matrix[r][c])
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
for r, letters in enumerate(matrix):
for c, letter in enumerate(letters):
print(r, c, letter)
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
2) List에 저장해서 str로 바꾸지말고 바로 문자열형으로 더하기
tmp = str(i)
3) tmp의 인덱스 반대로
tmp[::-1]
감사합니다.👨👧👧👨👧👧👨👧👧