반응형
문제 출처: www.acmicpc.net/problem/1439
1. 문제 접근 방식
- 0과 1이 바뀌는 부분에 중점을 두었다. 연속해서 나타나는 같은 숫자들의 중복을 제거하고 경우를 나누어보니 쉽게 규칙을 찾을 수 있었다. 자세한 설명은 주석에 적어두었다.
2. 내가 푼 코드
S = input()
cnt = 0
# 0과 1이 바뀌는 지점을 기준으로 0또는 1 하나로만 나타냄
# 예를 들면, 000111000111이라는 값이 있을 때
# 0101이라고 나타내고 두번만 뒤집으면 된다는 것을 파악
# 01010일 경우 1인 부분들을 뒤집으면 총 2번
# 010101일 경우 0또는 1인 부분을 뒤집어서 총 3번
# 0101010일 경우 1인 부분들을 뒤집으면 총 3번
# 문자열이 바뀌는 지점마다 cnt값 증가
for i in range(int(len(S))):
if int(S[i]) != int(S[i-1]):
cnt += 1
else:
continue
# cnt를 2로 나눈 몫이 결과값과 같다는 원리 응용
print(cnt // 2)
3. 결과 및 느낀점
- 성공! 역시 손으로 적으면서 하는게 규칙을 찾기 가장 좋은 방법이다!
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Baekjoon/백준] 1932번 Python (0) | 2021.04.09 |
---|---|
[개인공부] 알고리즘 공부 #5 (0) | 2021.04.08 |
[Baekjoon/백준] 10162번 Python (0) | 2021.04.08 |
[개인공부] 알고리즘 공부 #4 (0) | 2021.04.08 |
[Baekjoon/백준] 2437번 Python (0) | 2021.04.07 |