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