https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

#전체 코드

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
public class Program
{
    public static void Main()
    {
        int input = int.Parse(Console.ReadLine());

        int nd=0,nm=0,nDemo=1,nMole=0,ndCount=0,nmCount=0;
        

        //input이 1일때의 예외상황을 추가해주자
        if(input == 1)
        {
            Console.WriteLine("1/1");
        }
        else
        {
            while (ndCount < input)
            {


                if (nd == 0) //첫번쨰항인 1을 추가해주자
                {
                    ndCount++;
                    //Console.WriteLine("{0}!! nd", nd+1);
                }
                if (nd == 1)//끝나고 시작할때 부족한 1을 추가해주자
                {
                    ndCount++;
                    //Console.WriteLine("{0}!! nd", nd);
                }


                nDemo += 2;


                while (nd < nDemo)
                {
                    if (ndCount == input)
                    {
                        break;
                    }
                    nd++;
                    ndCount++;

                    //Console.WriteLine("{0}// nd {1} //ndCount", nd,ndCount);
                }
                while (nd > 1)
                {
                    if (ndCount == input)
                    {
                        break;
                    }
                    nd--;
                    ndCount++;
                    //Console.WriteLine("{0}// nd {1} //ndCount", nd, ndCount);
                }



            }

            while (nmCount < input)
            {

                if (nm == 1) //첫번째항 보충할 필요없이 끝날때의 1만 추가해주자
                {
                    nmCount++;
                    //Console.WriteLine("{0}!! nm", nm);
                }

                nMole += 2;

                while (nm < nMole)
                {
                    if (nmCount == input)
                    {
                        break;
                    }
                    nm++;
                    nmCount++;
                    //Console.WriteLine("{0}]] nm", nm);
                }
                while (nm > 1)
                {
                    if (nmCount == input)
                    {
                        break;
                    }
                    nm--;
                    nmCount++;
                    //Console.WriteLine("{0}]] nm", nm);
                }

            }



            if (ndCount >= input && nmCount >= input)
            {
                Console.WriteLine("{0}/{1}", nd, nm);
                //Console.ReadKey();
            }
        }
        //Console.ReadKey();

        


    }
}

'[백준] > C#' 카테고리의 다른 글

백준 1152번 단어의 개수 [C#]  (0) 2023.08.05
백준 1110번 더하기 사이클 [C#]  (0) 2023.08.05
백준 1065번 한수 [C#]  (2) 2023.08.05

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

 

#간단해설

띄어쓰기를 구분하면 되는 간단한 문제

노하우가 좀 필요할지도

#전체 코드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {



        static public void Main(string[] args)
        {
            string getStringA = Console.ReadLine();
            char[] delimiterChars = { ' ' };
            int count = 0;

            string[] arrayA = getStringA.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);

            

            Console.WriteLine(arrayA.Length);
            Console.ReadKey();
        }

        
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {



        static public void Main(string[] args)
        {
            string getStringA = Console.ReadLine();

            int count = 0;

            string[] arrayA = getStringA.Split(' ');

            for(int i=0; i<arrayA.Length; i++)
            {
                if (arrayA[i] == "")
                {
                    count++;
                }
            }

            Console.WriteLine(arrayA.Length-count);
            Console.ReadKey();
        }

        
    }
}

'[백준] > C#' 카테고리의 다른 글

백준 1193번 분수찾기 [C#]  (0) 2023.08.05
백준 1110번 더하기 사이클 [C#]  (0) 2023.08.05
백준 1065번 한수 [C#]  (2) 2023.08.05

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

#전체 코드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            //새로운 수 만들기 -> 새로운 수 비교 

            string input = Console.ReadLine();

            int repeat = 1;
            int[] array = new int[100]; //비교할 값들을 저장
            int count = 1; 
            array[0] = int.Parse(input);//첫번쨰 배열에는 처음 입력값 저장
            string inputFirstNumber, inputSecondNumber;
            int newNumber,final;

            while (repeat ==1)
            {
                if (int.Parse(input) < 10)
                {
                    
                    inputSecondNumber = input.Substring(0, 1);

                    final = int.Parse(inputSecondNumber) * 10 + int.Parse(inputSecondNumber);
                    array[count] = final;

                }
                else
                {
                    inputFirstNumber = input.Substring(0, 1);
                    inputSecondNumber = input.Substring(1, 1);
                    newNumber = int.Parse(inputFirstNumber) + int.Parse(inputSecondNumber);

                    string stringNewNumber = newNumber.ToString();
                    string newSecondNumber;

                    if (newNumber < 10)
                    {
                        newSecondNumber = stringNewNumber.Substring(0, 1);
                    }
                    else
                    {
                        newSecondNumber = stringNewNumber.Substring(1, 1);
                    }
                    

                    final = (int.Parse(inputSecondNumber) * 10) + int.Parse(newSecondNumber);
                    array[count] = final;


                }




                //새로운 수 비교

                for (int i = 0; i < count; i++)
                {
                    if (array[i] == array[count])
                    {
                        Console.WriteLine("{0}", count);
                        repeat = 0;

                    }
                }

                count++;

                input = final.ToString();
                
            }

            
               
            

        }
    }
}

'[백준] > C#' 카테고리의 다른 글

백준 1193번 분수찾기 [C#]  (0) 2023.08.05
백준 1152번 단어의 개수 [C#]  (0) 2023.08.05
백준 1065번 한수 [C#]  (2) 2023.08.05

https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

한수

 

전체 코드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {



        static public void Main(string[] args)
        {
            string getA = (Console.ReadLine());

            //각리수의 숫자를 뽑아내서 배열에 저장 -> 차이를 비교해서 저장
            //99까지는 어차피 한수니까 예외처리하자

            Console.WriteLine(Aberration(getA));
            Console.ReadKey();


        }

        static int Aberration(string d)
        {


            int count = 99;
            int[] arrayA = new int[1001];

            //예외처리
            if (d.Length > 2 && d.Length < 5)
            {
                //100부터 입력숫자까지 한수계산
                for (int e = 100; e <= int.Parse(d); e++)
                {

                    string insA = e.ToString();

                    for (int i = 0; i < insA.Length; i++)
                    {
                        arrayA[i] = int.Parse(insA[i].ToString());
                    }

                    //3자리수 아니면 1000 이다. 3자리수일때만 처리하면 더 편할거다.
                    if(insA.Length != 4)
                    {
                        //커지는 등차수열 작아지는 등차수열 구분
                        if (arrayA[0] >= arrayA[1] && arrayA[1] >= arrayA[2])
                        {

                            if ((arrayA[0] - arrayA[1]) == (arrayA[1] - arrayA[2]))
                            {
                                count++;
                            }

                        }

                        if (arrayA[0] < arrayA[1] && arrayA[1] < arrayA[2])
                        {


                            if ((arrayA[1] - arrayA[0]) == (arrayA[2] - arrayA[1]))
                            {
                                count++;
                            }

                        }
                    }


                    
                }
                return count;

            }
            

            return int.Parse(d);

           
        }
    }
}

'[백준] > C#' 카테고리의 다른 글

백준 1193번 분수찾기 [C#]  (0) 2023.08.05
백준 1152번 단어의 개수 [C#]  (0) 2023.08.05
백준 1110번 더하기 사이클 [C#]  (0) 2023.08.05

+ Recent posts