문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
0으로 채워진 문자열과 앞에서부터 한 문자씩 같은지 검사하되 다르다면 뒷부분을 1로 채워버리고 검사를 이어나가는 방식으로 생각하면 된다. (실제로 0으로 채워진 리스트를 만들어서 비교할 필요는 없고 숫자 하나에 기록한다.)
"0100111"이라고 가정하고 0과 비교를 시작하는 예제
0 -> 0과 비교시 같음
1 -> 0과 비교시 다름, 다음 숫자부터 1과 비교, 정답 1 증가
0 -> 1과 비교시 다름, 다음 숫자부터 0과 비교, 정답 1 증가
0 -> 0과 비교시 같음
1 -> 0과 비교시 다름, 다음 숫자부터 1과 비교, 정답 1 증가
1 -> 1과 비교시 같음
1 -> 1과 비교시 같음
정답 코드
T = int(input())
for i in range(T):
originMemory = list(map(int, input()))
answer = 0
fillBit = 0
for index, bit in enumerate(originMemory):
if fillBit == bit:
continue
else:
fillBit = 1 if fillBit==0 else 0
answer += 1
print(f"#{i+1} {answer}")
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA/Python] 1215번. [S/W 문제해결 기본] 3일차 - 회문1 (D3) (0) | 2024.11.14 |
---|---|
[SWEA/Python] 21425번. += (D2) (0) | 2024.11.12 |
[SWEA/Python] 1954번. 달팽이 숫자 (D2) (0) | 2024.11.12 |