-
1439. [Python]뒤집기Python_알고리즘/Silver V 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. 문제를 푸는데 도움이 되는 지식
- 문자열 반복문
'Python_알고리즘 > Silver V' 카테고리의 다른 글
2740. [Python]행렬 곱셈 (0) 2023.03.31 2535. [Python]아시아 정보올림피아드 (0) 2023.03.29 1817. [Python]짐 챙기는 숌 (0) 2023.03.27 14916. [Python]거스름돈 (0) 2023.02.02 2581. [Python]소수 (0) 2023.01.21