Programmers_LV0_숨어있는 숫자의 덧셈(2)

jkky98·2023년 1월 30일
0

CodingTraining

목록 보기
3/61

문제 풀이 논리.

문자열을 for문을 통해 모두 검사하며, 숫자형으로 변환가능한 문자열이 발견되면 임시리스트에 문자열 형태로 append, 만약 그 다음 문자가 숫자형으로 변환 가능한 경우라면 다시 문자열 형태로 append 이렇게 숫자형으로 변환 불가능한 문자열이 등장할 때까지 반복, 만약 변환 불가능한 문자열이 등장한다면, count에 문자열을 ''join()을 통해 합쳐서 int형으로 바꾸어 count에 누적시키는 방식,

  • 마지막 처리가 중요하다. 마지막의 경우 숫자형으로 변환 불가능한 문자열로 끝나면 문제없지만, 숫자로 끝날 경우 숫자만 임시리스트에 쌓여 count에 누적되지 못하고 return될 수 있으므로 모든 for문이 끝나고 마지막에 임시리스트에 데이터가 남아있다면, count에 누적시켜 마무리한다.
def check(i):
    try:
        can_int = int(i)
        return True
    except:
        return False

# 숫자형으로 바꿀 수 있는지 아닌지 확인하는 함수 자체 제작

def solution(my_string):
    list_tmp = [] # 임시리스트
    count = 0 # 카운트(return할 것)

    for i in my_string:
        if check(i): #숫자형으로 변환 가능한 문자라면 임시리스트에 추가
            list_tmp.append(i)
        else: # 숫자형 변환 불가능할 경우 임시리스트에 숫자들이 
        #있다면 합쳐서 카운트에 누적시킴, 임시리스트가 비었다면 그냥 패쓰
        #카운트에 누적시켰다면 임시리스트 초기화
            if len(list_tmp) >= 1: 
                count += int(''.join(list_tmp))
                list_tmp.clear()
            else:
                pass
    #for문이 모두 끝나고 else문에서만 누적기능이 있으므로
    # 임시리스트에 숫자데이터가 남을 경우 처리
    if list_tmp: 
        count += int(''.join(list_tmp))
    return count

알고갈 메서드
리스트.clear() : 리스트 아예 비우기.
'n'.join(list) : 리스트 안의 문자열 n구분자 기준으로 합침.

profile
자바집사의 거북이 수련법

0개의 댓글