-
백준 1439번 : 뒤집기 (C 언어)c c++ 언어 공부 2023. 8. 24. 11:48
https://www.acmicpc.net/problem/1439
1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
Code:
12345678910111213141516171819#include <stdio.h>#include <string.h>int main() {char arr[1000000];scanf("%s", arr);int len = strlen(arr);int count = 0;int flips = 0;for (int i = 0; i < len; i++) {if (arr[i] != arr[i + 1]) {flips++;}}printf("%d\n", flips / 2);return 0;}cs 문제 설명:
해당 문제는 다솜이가 주어진 문자열 S를 모두 같은 숫자로 만들기 위해 필요한 행동의 최소 횟수를 구하는 문제입니다. 문자열 S는 0과 1로 이루어져 있으며, 다솜이는 연속된 숫자를 뒤집는 행동을 할 수 있습니다. 뒤집는 행동은 0을 1로, 1을 0으로 바꾸는 것을 의미합니다.
예를 들어, 문자열 S가 "0001100"인 경우, 다솜이는 다음과 같은 행동을 할 수 있습니다:
- 전체를 뒤집으면 "1110011"이 됩니다.
- 4번째 문자부터 5번째 문자까지 뒤집으면 "1111111"이 됩니다.
위의 예에서 다솜이는 2번의 행동으로 모든 숫자를 같게 만들 수 있습니다. 문제에서는 주어진 문자열 S를 모두 같은 숫자로 만들기 위해 필요한 최소 행동 횟수를 구해야 합니다.
코드 설명:
이 코드는 문자열 S를 입력받고, 주어진 문자열을 모두 같은 숫자로 만들기 위해 필요한 최소 행동 횟수를 계산합니다. 다음은 코드의 주요 부분입니다:
- arr[1000000] 배열은 문자열 S를 저장합니다. 문자열은 scanf를 사용하여 입력 받습니다.
- flips 변수는 문자열 S를 뒤집어야 하는 횟수를 저장합니다.
- for 루프를 사용하여 문자열 S를 순회하면서 연속된 숫자가 바뀌는 부분을 찾습니다. 바뀌는 부분이 있을 때마다 flips 값을 증가시킵니다.
- 마지막으로, flips 값을 2로 나누어 최소 행동 횟수를 구하고 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 5800번 : 성적 통계 (C 언어) (0) 2023.08.26 백준 11931번 : 수 정렬하기 4(C 언어) (0) 2023.08.26 백준 2485번 : 가로수 (C 언어) (0) 2023.08.24 백준 1302번 : 베스트셀러 (C 언어) (0) 2023.08.23 백준 2822번 : 점수 계산(C 언어) (0) 2023.08.23