Python_알고리즘/Silver V
1439. [Python]뒤집기
최근영
2023. 2. 1. 22:55
1. 문제
https://www.acmicpc.net/problem/1439
1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
2. 접근 방법
- 시간 제한: 2초
- 메모리 제한: 128MB
- 문자열 카운트
3. 파이썬 코드
N = input()
# 값을 비교할 문자열 변수 생성
check = ""
# 갯수를 카운트할 변수 생성
cnt = 1
# 문자열 반복 시작
for i in N:
# 처음 값을 시작했을 경우
if check == "":
# 비교할 문자열 변수에 i 값을 넣어줌
check = i
# 처음이 아닌 경우
else:
# 만약 i 값이랑 이전의 i 값이 다를경우 cnt + 1
if check != i:
cnt += 1
# 모든 조건문이 끝나면 check에 i 값 넣어줌
check = i
# cnt 값이2 이상 즉 변화가 있을경우
if cnt >= 2:
# cnt // 2 값을 출력
print(cnt//2)
# 초기 cnt 값이랑 변화가 없을 경우 0 출력
elif cnt == 1:
print(0)
4. 문제를 풀고난 후 생각
- 문제를 읽고 1과 0이 반복되기때문에 문자열로 접근해야겠다고 생각을 했다.
- 받아온 문자열을 반복문을 통해서 1이 들어왔는지 0이 들어왔는지 갯수를 세는것으로 진행을 하였고, 초기 cnt 값은 1로 설정해줬다.
- 처음에는 빈 공백 ""를 변수로 받은 문자열 변수 한개를 생성하였고 시작할 경우 i 값을 넣어주고 그 이후 부터 값이 다른 부분을 체크해 나가는 식으로 구현하였다.
- 만약 체크값이랑 i 값이 다를 경우 cnt 를 더해주는 식으로 반복문을 구현하였고 이때 출력할때 주의할 점이 "1110011" 라는 문자가 주어지면 1에서 0으로 갈때 cnt 값이 1증가, 0에서 다시 1로갈때 값을 증가하기 떄문에 불필요한 계산이 두번 진행된다.
- cnt 값이 2이상 즉 문자열에 변화가 있을때 2로 나눈 몫값을 출력하고 cnt 값이 초기값인 1인 경우 문자를 변환할 것이 없기때문에 0으로 출력한다.
5. 문제를 푸는데 도움이 되는 지식
- 문자열 반복문