알고리즘/프로그래머스
[Programmers] 문자열 나누기 _Python
3o14
2022. 12. 2. 18:19
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/140108
풀이
def solution(s):
ans = 0
char = ""
ch1, ch2 = 0, 0
for idx, i in enumerate(s):
if char == "":
char = i
ch1 += 1
elif char == i:
ch1 += 1
elif char != i:
ch2 += 1
if ch1 == ch2 or idx == len(s)-1:
print(char, i, idx)
ans += 1
ch1 = 0
ch2 = 0
char = ""
return ans
다른 사람의 풀이
def solution(s):
answer = 0
sav1=0
sav2=0
for i in s:
if sav1==sav2:
answer+=1
a=i
if i==a:
sav1+=1
else:
sav2+=1
return answer
훨씬 짧게도 가능했다.
새로 알게된 함수
enumerate
for문에서 Index와 value 동시에 접근하기 _enumerate()
enumerate() 내장 함수를 이용하는 방법
enumerate()라는 내장 함수를 이용하면 더 편리하고 가시적인 코딩을 할 수 있다.
arr = [2, 7, 10]
for idx, val in enumerate(arr):
print(idx, val)
# Output:
# 0 2
# 1 7
# 2 10
enumerate
enumerate는 ‘열거하다’라는 뜻이다.
enumerate() 내장 함수는 순서가 있는 자료형(tuple, list, string)을 첫번째 인자로 받아서 각각의 index 값과 value 값들을 enumerate 객체로 리턴한다.
my_list = ['apple', 'banana', 'grapes']
counter_list = list(enumerate(my_list))
print(counter_list)
# Output: [(0, 'apple'), (1, 'banana'), (2, 'grapes')]
두번째 인자로 정수를 전달하면 시작하는 index 값을 조정할 수도 있다.
arr = [2, 7, 10]
for idx, val in enumerate(arr, 5):
print(idx, val)
# Output:
# 5 2
# 6 7
# 7 10
LIST