Algorithm/BOJ
[BOJ] 1439 뒤집기 C# 풀이
Bueong_E
2023. 1. 20. 23:06
반응형
SMALL
using System;
using System.Linq;
namespace _1439
{
class Program
{
static void Main()
{
// 특정 수로 통일시키기 위해서, 0을 1로 바꾸거나 1을 0으로 바꿔야한다.
// 연속된 하나 이상의 숫자를 모두 뒤집는 것이 가능하므로
// 연속된 숫자가 k개 있을 경우 k개를 한번에 뒤집는 것이 optimal solution이다.
// 1이 연속되는 부분이 몇 개 있는지, 0이 연속되는 부분이 몇 개 있는지 확인한 다음 둘 중 가장 적은 것을 택하는 것이 답이 된다.
var str = Console.ReadLine();
var arr = Array.ConvertAll(str.ToArray().Select(x => x.ToString()).ToArray(), int.Parse);
//여기부터 작성하세요
int count = 0;
for (int i = 0; i < arr.Length; i++)
{
if (i == 0) continue; //0번 인덱스는 넘기기
if (arr[i] != arr[i - 1]) //0에서 1 또는 1에서 0으로 변경될떄마다 카운트++
count++;
}
if (count == 1) // 숫자가 한번 변경되면 1
Console.WriteLine(1);
else if (count % 2 != 0)
Console.WriteLine(count / 2 + 1); //숫자가 홀수번 변경되었다면
else
Console.WriteLine(count / 2); //숫자가 짝수번 변경되었다면
}
}
}
결과창
or
or
or
반응형
LIST