반응형

1. 문제

- [백준 C#] 1546번 평균 (C#)  (https://www.acmicpc.net/problem/1546)

 

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • 과목 개수 n 입력 받기
  • 각각의 성적 n개 입력 받기
  • 문제에서 요구하는 방식으로 계산
    (모든 점수를 점수/M*100)

 

 

반응형

 

 

3. 전체 코드

using System;
using System.Collections.Generic;
using System.Linq;

namespace B1_01546번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int cnt = int.Parse(Console.ReadLine());
            List<double> list = new List<double>( Array.ConvertAll(Console.ReadLine().Split(), double.Parse));

            // 리스트를 내림차순 정렬
            list = list.OrderByDescending(x => x).ToList();

            double max = list.Max();
            
            // 각각의 성적을 문제의 요구사항대로 변환
            for (int i = 0; i < cnt; i++)
            {
                list[i] = list[i] / max * 100;
            }

            // 평균값 출력
            Console.WriteLine(list.Average());
        }
    }
}

// 1546번 평균
// https://www.acmicpc.net/problem/1546
반응형
반응형

1. 문제

- [백준 C#] 1110번 더하기 사이클
// https://www.acmicpc.net/problem/1110

 

 

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • 숫자를 입력 받는다
  • 숫자가 한자리일 경우 앞에 "0"을 붙여 두자리 숫자를 만든다
  • 위의 공식대로 계산한다

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B1_01110번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string num = Console.ReadLine();

            // 입력이 한자리수인경우 왼쪽에 0을 붙여 예외가 발생하지 않도록 만든다
            if (num.Length == 1)
            {
                num = "0" + num;
            }

            string origin = num;
            int cnt = 0;
            int sum;
            string s_sum;

            while (true)
            {
                sum = int.Parse(num[0].ToString()) + int.Parse(num[1].ToString());
                s_sum = sum.ToString();

                // 2개의 숫자를 더한값의 1의 자리와 처음 숫자 1의자리를 붙이기
                // string을 자르면 char이 되기에 꼭 ToString()을 붙여야 한다
                num = num[1] + s_sum[s_sum.Length - 1].ToString();
                cnt += 1;

                if (num == origin)
                {
                    break;
                }
            }
            Console.WriteLine(cnt);
        }
    }
}

// 1110번 더하기 사이클
// https://www.acmicpc.net/problem/1110
반응형
반응형

1. 문제

- [백준 C#] 2439번 별 찍기 - 2
// https://www.acmicpc.net/problem/2439

 

 

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

 

 

2. 문제 포인트

  • 문자열 보간을 이용하여 양식을 생성한다.
  • 양식에 맞춰 테이터를 출력한다.

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B4_02439번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int cnt = int.Parse(Console.ReadLine());

            // 문자열 보간 양식 생성
            string a = "{0, " + cnt.ToString() + "}"; 


            for (int i = 1; i <= cnt; i++)
            {
                string star = "";
                for (int j = 1; j <= i; j++)
                {
                    star += "*";
                }

                // 위에서 생성한 문자열 보간으로 별 출력
                Console.WriteLine(a, star);
            }    
        }
    }
}

// 2439번 별 찍기 - 2
// https://www.acmicpc.net/problem/2439
반응형
반응형

1. 문제

- [백준 C#] 15552번 빠른 A+B
// https://www.acmicpc.net/problem/15552

 

 

본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
자세한 설명 및 다른 언어의 경우는 이 글에 설명되어 있다.
이 블로그 글에서 BOJ의 기타 여러 가지 팁을 볼 수 있다.

 

 

2. 문제 포인트

  • 첫행에 문제 수를 입력 받는다
  • 반복문으로 더할 값을 입력 받는다
  • Console.WriteLine()은 매번 반복문으로 출력할 경우 소요시간이 커 시간 초과가 나올 가능성이 높음

 

 

반응형

 

 

3. 전체 코드

using System;
using System.Collections.Generic;

namespace B4_15552번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int cnt = int.Parse(Console.ReadLine());

            int a;
            int b;
            
            List<int> list = new List<int>();
            for (int i = 0; i < cnt; i++)
            {
                string[] num = Console.ReadLine().Split();
                a = int.Parse(num[0]);
                b = int.Parse(num[1]);
                list.Add(a + b);
            }
            // 출력을 한번에 하는 이유
            //// for문으로 매번 출력하게되면 제한 시간에 걸려 시간초과가 된다
            /// \n을 사용함으로 한번에 여러줄로 출력을 한다
            Console.WriteLine(string.Join("\n", list));
        }
    }
}

// 15552번 빠른 A+B
// https://www.acmicpc.net/problem/15552
반응형
반응형

1. 문제

- [백준 C#] 3052번 나머지 (C#)  (https://www.acmicpc.net/problem/3052)

 

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • 반복문을 통해 숫자 10개 입력 받기
  • 리스트를 생성하여 나머지 값을 수집
  • 이미 리스트에 있는 나머지값인 경우 추가 하지 않는다 

 

 

반응형

 

 

3. 전체 코드

using System;
using System.Collections.Generic;
using System.Linq;

namespace B2_03052번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int>();

            int temp = 0;

            for (int i = 0; i < 10; i++)
            {
                temp = int.Parse(Console.ReadLine()) % 42;

                // 나머지 값이 리스트 안에 있는지 확인한다.
                // 앞에 '!'를 붙여 true/false가 반대로 출력되게 한다
                if (!list.Contains(temp))
                {
                    list.Add(temp);
                }

            }

            Console.WriteLine(list.Count());
        }
    }
}

// 3052번 나머지
// https://www.acmicpc.net/problem/3052
반응형

'알고리즘 > C#' 카테고리의 다른 글

[백준 C#] 2439번 별 찍기 - 2 (C#)  (0) 2022.09.17
[백준 C#] 15552번 빠른 A+B (C#)  (0) 2022.09.17
[백준 C#] 2438번 별 찍기 -1 (C#)  (0) 2022.09.16
[백준 C#] 2739번 구구단 (C#)  (0) 2022.09.16
[백준 C#] 8393번 합 (C#)  (0) 2022.09.16
반응형

1. 문제

- [백준 C#] 2438번 별 찍기 -1
// https://www.acmicpc.net/problem/2438

 

 

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

 

2. 문제 포인트

  • 최대 별의 개수를 입력 받는다
  • 반복문으로 별을 찍는다

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_02438번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int cnt = int.Parse(Console.ReadLine());

            for (int i = 1; i <= cnt; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
    }
}

// 2438번 별 찍기 -1
// https://www.acmicpc.net/problem/2438
반응형

'알고리즘 > C#' 카테고리의 다른 글

[백준 C#] 15552번 빠른 A+B (C#)  (0) 2022.09.17
[백준 C#] 3052번 나머지 (C#)  (0) 2022.09.16
[백준 C#] 2739번 구구단 (C#)  (0) 2022.09.16
[백준 C#] 8393번 합 (C#)  (0) 2022.09.16
[백준 C#] 10871번 X보다 작은 수 (C#)  (0) 2022.09.15
반응형

1. 문제

- [백준 C#] 2739번 구구단
// https://www.acmicpc.net/problem/2739

 

 

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

 

2. 문제 포인트

  • 숫자를 입력 받는다
  • 반복문을 통해 구구단을 만든다

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_02739번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int num = int.Parse(Console.ReadLine());

            // 구구단 출력
            for (int i = 1; i < 10; i++)
            {
                Console.WriteLine($"{num} * {i} = {num * i}");
            }
        }
    }
}

// 2739번 구구단
// https://www.acmicpc.net/problem/2739
반응형

'알고리즘 > C#' 카테고리의 다른 글

[백준 C#] 3052번 나머지 (C#)  (0) 2022.09.16
[백준 C#] 2438번 별 찍기 -1 (C#)  (0) 2022.09.16
[백준 C#] 8393번 합 (C#)  (0) 2022.09.16
[백준 C#] 10871번 X보다 작은 수 (C#)  (0) 2022.09.15
[백준 C#] 10950번 A+B - 3 (C#)  (0) 2022.09.15
반응형

1. 문제

- [백준 C#] 8393번 합
// https://www.acmicpc.net/problem/8393

 

 

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

 

2. 문제 포인트

  • 숫자 1개 입력
  • 1부터 n까지 모두 곱한다

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_08393번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int num = int.Parse(Console.ReadLine());

            int result = 0;

            // 1부터 시작해서 입력받은 숫자까지 더한다
            for (int i=1; i<=num; i++)
            {
                result += i;
            }

            Console.WriteLine(result);
        }
    }
}

// 8393번 합
// https://www.acmicpc.net/problem/8393
반응형

+ Recent posts