내 풀이

 

 

 

 

챗 GPT 보안

 

 

코드 설명

  1. 입력 처리:
    • K: 갖고 있는 랜선의 개수입니다.
    • N: 필요한 랜선의 개수입니다.
    • arr: 각 랜선의 길이를 저장하는 배열입니다. 이 배열의 크기는 K입니다.
  2. 이진 탐색 초기화:
    • min = 1: 최소 길이로 설정합니다. 랜선은 길이가 최소 1 이상이므로 1로 시작합니다.
    • max = arr.Max(): 주어진 랜선 중 가장 긴 길이를 max로 설정합니다.
    • result: 가능한 최대 랜선 길이를 저장할 변수입니다.
  3. 이진 탐색 반복:
    • mid: 현재 탐색 중인 랜선 길이의 중간값을 구합니다.
    • count: 현재 mid 길이로 랜선을 잘랐을 때 얻을 수 있는 랜선의 개수를 계산합니다.
  4. 조건문:
    • count >= N: 필요한 랜선 개수 이상이 나오면 result를 업데이트하고, 더 긴 길이를 탐색합니다 (min을 증가).
    • count < N: 필요한 랜선 개수보다 부족하면, 더 짧은 길이를 탐색합니다 (max를 감소).
  5. 결과 출력:
    • 반복이 끝나면, 가능한 최대 랜선 길이가 result에 저장되며 이를 출력합니다.

주의사항

이진 탐색 과정에서 mid 계산 및 count 계산 시 큰 수가 나올 수 있으므로 long 타입을 사용해 오버플로우를 방지합니다.

'코딩 문제 풀이' 카테고리의 다른 글

백준 2566번 최댓값  (0) 2024.08.12
백준 - 2501 약수 구하기  (0) 2024.08.12
백준 10994 별 찍기 - 19  (0) 2024.08.09
백준 10990번 별 찍기 -15  (0) 2024.08.08
백준 1008번 A/B  (0) 2024.08.02

 

// 패턴 출력 과정에서 시간 초과로 인한 코드 변경

 

StringBuilder 사용: 대량의 데이터를 한 번에 출력하기 위해 StringBuilder를 사용합니다. 이렇게 하면 여러 번의 Console.Write 호출을 줄일 수 있습니다

//using System.Text; 적용해야됌

 

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                sb.Append(pattern[i, j]);
            }
            sb.AppendLine();
        }
        Console.Write(sb.ToString());

 

.

'코딩 문제 풀이' 카테고리의 다른 글

백준 - 2501 약수 구하기  (0) 2024.08.12
백준-1654 랜선 자르기  (0) 2024.08.12
백준 10990번 별 찍기 -15  (0) 2024.08.08
백준 1008번 A/B  (0) 2024.08.02
간단한 숫자 연산  (0) 2024.08.01

'코딩 문제 풀이' 카테고리의 다른 글

백준 - 2501 약수 구하기  (0) 2024.08.12
백준-1654 랜선 자르기  (0) 2024.08.12
백준 10994 별 찍기 - 19  (0) 2024.08.09
백준 1008번 A/B  (0) 2024.08.02
간단한 숫자 연산  (0) 2024.08.01

문제

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.

예제 입력 1 복사

1 3

예제 출력 1 복사

0.33333333333333333333333333333333

10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다.

예제 입력 2 복사

4 5

예제 출력 2 복사

0.8

 

 

  • #include <iomanip>: fixed와 setprecision을 사용하기 위해 필요한 헤더 파일을 포함합니다.
  • fixed: 출력을 고정 소수점 형식으로 설정합니다. 이는 setprecision과 함께 사용하여 소수점 이하 자리수를 지정할 때 필요합니다.
  • setprecision(10): 소수점 이하 10자리까지 출력을 설정합니다. 즉, 소수점 이하 10자리까지 정확하게 값을 표시합니다.

이 코드에서, 예를 들어 사용자가 10.0과 3.0을 입력하면, 출력은 3.3333333333처럼 소수점 이하 10자리까지 표시됩니다.

'코딩 문제 풀이' 카테고리의 다른 글

백준 - 2501 약수 구하기  (0) 2024.08.12
백준-1654 랜선 자르기  (0) 2024.08.12
백준 10994 별 찍기 - 19  (0) 2024.08.09
백준 10990번 별 찍기 -15  (0) 2024.08.08
간단한 숫자 연산  (0) 2024.08.01

간단한 숫자 연산

C# 프로그램에서 간단한 숫자 연산을 실행해 본다.

 실습

위의 Hello World 프로그램에서 빨간색 박스 안의 코드를 지우고 다음 코드를 실행한다. 아래 코드는 변수(variable) a 에 100을, 변수(variable) b 에 200을 넣고, a와 b를 합한 값 즉 300을 변수 c 에 넣는 코드이다.

  using System;

  namespace HelloWorld
  {
      class Program
      {
          static void Main(string[] args)
          {
              // 변수 a 에 100 할당
              int a = 100;

              // 변수 b 에 100 할당
              int b = 200;

              // a와 b를 합하여 변수 c 에 할당
              int c = a + b;

              // 변수 c 의 값을 출력
              Console.WriteLine(c);
          }
      }
  }
  • C#에서 한 문장의 끝에는 세미콜론(;)을 붙인다.
  • C#에서 // 을 사용하면 코멘트 시작을 의미한다.

루프: 1 부터 100까지 합계

프로그램은 반복적으로 작업을 하는데 유용한데, 이는 보통 프로그래밍에서 Loop 라고 불리운다. C#에는 반복적인 일을 하기 위해 for 문, foreach 문, while 문 등이 있는데, 여기서는 for 문을 사용해 본다.

 실습

1 부터 100까지 합계를 구하기 위하여 숫자 1부터 100까지 계속 더할 수 있지만, 보통 루프(Loop)를 사용하여 반복적인 실행을 수행하면 편리하다. 여기서는 for 루프문을 사용하여 1부터 100까지의 합계를 구해본다.

  using System;

  namespace HelloWorld
  {
      class Program
      {
          static void Main(string[] args)
          {
              int sum = 0;

              for (int i = 1; i <= 100; i++)
              {
                  sum = sum + i;
              }

              Console.WriteLine("Sum: {0}", sum);
          }
      }
  }
  • for문은 for(초기값; 반복조건식; 증감식) 와 같이 (루프변수의 초기값, 루프가 계속되는 조건식, 루프변수 증감식)을 사용한다
  • sum = sum + i 문장은 sum 과 i 를 더해 그 결과를 다시 sum 에 넣는다. 값을 누적하는 효과가 있다.

루프: 구구단 3단

구구단 3단을 출력하는 프로그램을 루프를 통해 작성해 본다.

 실습

Console.WriteLine() 은 Console.WriteLine("a={0}, b={1}", a, b) 와 같이 출력형식 "a={0}, b={1}" 과 {0},{1} 에 각각 들어갈 변수 a, b를 지정할 수 있다.

  using System;

  namespace HelloWorld
  {
      class Program
      {
          static void Main(string[] args)
          {
              int dan = 3;

              for (int i = 1; i < 10; i++)
              {
                  Console.WriteLine("{0} x {1} = {2}", dan, i, dan * i);
              }
          }
      }
  }
  • Console.WriteLine()의 첫번째 파라미터로 출력포맷이 사용되었다. 여기서는 {0}, {1}, {2} 3개의 파라미터가 해당 위치에 삽입된다.

루프: 구구단

구구단 2단부터 9단까지 출력하는 프로그램을 루프를 통해 작성해 본다. 여기서는 루프 안에 또 다른 루프가 있는 소위 Nested Loop 를 사용한다.

 실습

변수 i 를 사용하는 외부 for 루프는 2단, 3단, ..., 9단의 각 단을 나타내고, 변수 j 를 사용하는 외부 for 루프는 (위의 3단 예제처럼) 각 단의 결과를 출력하는 루프이다.

  using System;

  namespace HelloWorld
  {
      class Program
      {
          static void Main(string[] args)
          {
              for (int i = 2; i < 10; i++)
              {
                  for (int j = 1; j < 10; j++)
                  {
                      Console.WriteLine("{0} x {1} = {2}", i, j, i * j);
                  }
              }
          }
      }
  }

'코딩 문제 풀이' 카테고리의 다른 글

백준 - 2501 약수 구하기  (0) 2024.08.12
백준-1654 랜선 자르기  (0) 2024.08.12
백준 10994 별 찍기 - 19  (0) 2024.08.09
백준 10990번 별 찍기 -15  (0) 2024.08.08
백준 1008번 A/B  (0) 2024.08.02

+ Recent posts