Algo/SWEA

[SWEA][Python] 12222. 문자열 나누기

뉴비코 2023. 8. 10. 15:18

※ SW expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

 

▶ 문제보기

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

▶ 해결

 

# 오답 코드 : '인접한 문자열'이 아닌 모든 문자열을 비교했다.

T = int(input())
for t in range(1, T + 1):
    word = input()
    cnt = 0
    wait = ''
    word_list = []
    # 문자열을 잘라서,같지 않게/ 최대 K 이므로 최대한 많이 자르는 것이 중요! aabbaa
    for w in word:
        if len(wait) == 0:
            if w not in word_list:
                word_list.append(w)
            else:
                wait += w
        # 대기 문자열이 있다면
        else:
            # 합친 문자열이 리스트에 없다면 추가하기
            if wait + w not in word_list:
                wait += w
                word_list.append(wait)
                #초기화
                wait = ''
            else:
                wait += w
    print(f'#{t} {len(word_list)}')

# 해결 코드 : 인접한 문자열을 비교해주는 방법 / 저장 해놓고 때마다 비교하기

T = int(input())
for t in range(1, T + 1):
    word = input()
    cnt = 0
    now = ''
    before=''
    # 문자열을 잘라서,같지 않게/ 최대 K 이므로 최대한 많이 자르는 것이 중요!
    # +) 인접한 문자열만 같지 않으면 된다.
    for i in range(len(word)):
        now += word[i]
        # 만약 지금 문자열이 이전 문자열과 다르다면
        if now != before:
            #1을 더해주고
            cnt+=1
            # 이전 문자열을 현재문자열로 해준다.
            before = now
            #초기화
            now =''

    print(f'#{t} {cnt}')

 

▶ 소감

 

- 문제를 잘 읽고 풀이해야 한다.

- 문제 접근 방식에서 최고의 효율로 풀이하는 방법을 더 많이 익혀야겠다.