컴공생의 다이어리

문자열 뒤집기 본문

Development/Algorithm & Coding Test

문자열 뒤집기

컴공 K 2020. 12. 18. 20:45

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다.

예를 들어 S=0001100 일 때,

  1. 전체를 뒤집으면 1110011이 된다.
  2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.

하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.

 

질문

문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오.

 

 

코드로 구현

아래는 파이썬으로 구현한 코드이다.

data=input()
change=[data[0]]

for i in range(1,len(data)):
          if data[i]!=change[-1]:
                    change.append(data[i])
zero_cnt=change.count('0')
one_cnt=change.count('1')

print(min(zero_cnt,one_cnt))

 

아래는 c/c++으로 구현한 코드이다.

#include<iostream>
#include<string>

int main() {
	std::string data;
	int flag = -1;
	int zero=0,one=0;
	std::cin >> data;
	for (int i = 0; i < data.length(); i++) {
		if (flag != 0 && data[i] == '0') {
			flag = 0;
			zero++;
		}
		else if (flag != 1 && data[i] == '1') {
			flag = 1;
			one++;
		}
	}
	std::cout << std::min(zero, one);
	return 0;
}

 

 

 

www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791162243077

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 교보문고

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제

www.kyobobook.co.kr

 

728x90

'Development > Algorithm & Coding Test' 카테고리의 다른 글

볼링공 고르기  (0) 2020.12.18
만들 수 없는 금액  (0) 2020.12.18
곱하기 혹은 더하기  (0) 2020.12.18
모험가 길드  (0) 2020.12.18
1이 될 때까지  (0) 2020.12.17
Comments