본문 바로가기

알고리즘, 문제 풀이기록

문자열 뒤집기 풀이

(하다만 내 풀이)

s = input()
zero_chunk_count = 0
one_chunk_count = 0
l = []

for i in s:
    l.append(i)

for i in range(len(l)):
    if l[i] == '0' and l[i+1] != '0':
        zero_chunk_count += 1
    elif l[i] == '1' and l[i+1] != '0':
        one_chunk_count += 1

if zero_chunk_count > one_chunk_count:
    print(one_chunk_count)
elif zero_chunk_count < one_chunk_count:
    print(zero_chunk_count)

(정답)

data = input()
count0 = 0 # 전부 0으로 바꾸는 경우
count1 = 0 # 전부 1로 바꾸는 경우

# 첫 번째 원소에 대해서 처리
if data[0] == '1':
    count0 += 1
else:
    count1 += 1

# 두 번째 원소부터 모든 원소를 확인하며
for i in range(len(data) - 1):
    if data[i] != data[i + 1]:
        # 다음 수에서 1로 바뀌는 경우
        if data[i + 1] == '1':
            count0 += 1
        # 다음 수에서 0으로 바뀌는 경우
        else:
            count1 += 1

print(min(count0, count1))

정답 코드로 배운 점

1. 정답 코드에서는 리스트를 활용하지 않았다.

2. 입력값을 실제로 바꾸지 않고도 문제에서 요구하는 값을 도출할 수 있음을 확인했다.

'알고리즘, 문제 풀이기록' 카테고리의 다른 글

ATM 풀이기록  (0) 2022.01.20
거스름돈  (0) 2022.01.14
루빅스큐브 2단계 구현기록  (0) 2021.12.06
루빅스 큐브 1단계 구현 기록  (0) 2021.11.30
자바의 정석 연습문제 6-1,2 풀이  (0) 2021.11.17