알고리즘/프로그래머스

[Programmers] 문자열 나누기 _Python

3o14 2022. 12. 2. 18:19
728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/140108

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

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