반응형

1. 문제

- [백준 C# 기초] 10172번 개 (https://www.acmicpc.net/problem/10172)

 

아래 예제와 같이 개를 출력하시오.
|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

 

 

2. 문제 포인트

  • 콘솔창에 개 그림 출력

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_10172번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 역슬래시의 숫자를 잘 확인한다
            Console.WriteLine("|\\_/|");
            Console.WriteLine("|q p|   /}");
            Console.WriteLine("( 0 )\"\"\"\\");
            Console.WriteLine("|\"^\"`    |");
            Console.WriteLine("||_/=\\\\__|");
        }
    }
}

// 10172번 개
// https://www.acmicpc.net/problem/10172
반응형
반응형

1. 문제

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

 

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • A, B, C를 입력받음
  • 각각 계산하여 한줄씩 출력

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_10430번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 입력 받은 숫자를 배열로 나눠 한번에 int형식으로 변환
            int[] in_data = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);

            Console.WriteLine((in_data[0] + in_data[1]) % in_data[2]);
            Console.WriteLine(((in_data[0] % in_data[2]) + (in_data[1] % in_data[2])) % in_data[2]);
            Console.WriteLine((in_data[0] * in_data[1]) % in_data[2]);
            Console.WriteLine(((in_data[0] % in_data[2]) * (in_data[1] % in_data[2])) % in_data[2]);
        }
    }
}

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

1. 문제

- [백준 C# 기초] 10926번 ??!  (https://www.acmicpc.net/problem/10926)

 

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • 입력받은 값에 "??!"를 붙여서 출력

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_10926번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 입력받은 문자열에 "??!"을 붙여 출력
            Console.WriteLine(Console.ReadLine() + "??!");
        }
    }
}

// 10926번 ??!
// https://www.acmicpc.net/problem/10926
반응형
반응형

1. 문제

- [백준 C# 기초] 18108번 1998년생인 내가 태국에서는 2541년생?! (https://www.acmicpc.net/problem/18108)

 

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.

불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

 

 

2. 문제 포인트

  • 입력받은 년도에 543을 빼고 출력

 

 

반응형

 

 

3. 전체 코드

using System;

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

            Console.WriteLine(y-543);
        }
    }
}

// 18108번 1998년생인 내가 태국에서는 2541년생?!
// https://www.acmicpc.net/problem/18108
반응형
반응형

1. 문제

- [백준 C# 기초] 25083번 새싹 (https://www.acmicpc.net/problem/25083)

 

아래 예제와 같이 새싹을 출력하시오.
         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |

 

 

2. 문제 포인트

  • 콘솔창에 새싹 그림 출력

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_25083번
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 역슬래시(\)를 잘 확인해서 출력한다
            Console.WriteLine("         ,r'\"7");
            Console.WriteLine("r`-_   ,'  ,/");
            Console.WriteLine(" \\. \". L_r'");
            Console.WriteLine("   `~\\/");
            Console.WriteLine("      |");
            Console.WriteLine("      |");
        }
    }
}

// 25083번 새싹
// https://www.acmicpc.net/problem/25083
반응형
반응형

1. 문제

- [백준 C# 기초] 10869번 사칙연산 (https://www.acmicpc.net/problem/10869)

 

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

 

2. 문제 포인트

  • 공백을 기준으로 2가지 숫자 입력
  • 5가지 계산을 한줄에 하나씩 출력

 

 

반응형

 

 

3. 전체 코드

using System;

namespace B5_사칙연산
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] in_data = Console.ReadLine().Split();

            Console.WriteLine(int.Parse(in_data[0]) + int.Parse(in_data[1]));
            Console.WriteLine(int.Parse(in_data[0]) - int.Parse(in_data[1]));
            Console.WriteLine(int.Parse(in_data[0]) * int.Parse(in_data[1]));

            // 문제 조건에서 정부 부분만 출력하는 것이기에 double이 아닌 int로 형변환을 한다
            Console.WriteLine(int.Parse(in_data[0]) / int.Parse(in_data[1]));
            Console.WriteLine(int.Parse(in_data[0]) % int.Parse(in_data[1]));
        }
    }
}

// 10869번 사칙연산
// https://www.acmicpc.net/problem/10869
반응형
반응형

 

1. 문제

    1789번 수들의 합 (https://www.acmicpc.net/problem/1789)

 

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

 

 

2. 문제 포인트

  • 중복되지 않는 자연수 개수 구하기

 

반응형

 

3. 접근법

  • S를 자연수로 하나씩 빼면서 총 개수를 구한다
  • 1, 2, 3... 숫자 하나씩을 S에서 빼면서 계산하다가 뺄 수(n)보다 S의  나머지가 작은 경우 반복문을 종료한다.
    ex. 15인 경우
           15 - 1 - 2 - 3 - 4 - 5  = 0  >> 5번
           17 - 1 - 2 - 3 - 4 - 7 = 0  >>  5번
             - 1~5까지 빼면 17은 2가 남게 됨
             - 1~4까지 빼고 7을 빼면 중복되지 않은 자연수들로 계산이 가능

 

4. 결과 코드

import sys

a = int(sys.stdin.readline().strip())

# 숫자 사용 횟수
cnt = 0
# 계산에 사용될 숫자
num = 1

while True:
    # 입력받은 숫자에서 1부터 하나씩 빼서 숫자 사용 횟수 계산
    a -= num
    cnt += 1
    num += 1

    # 1부터 1씩 증가한 num이 a의 나머지값보다 크면 숫자가 중복되어 사용되기에
    # num이 a보다 크게 되는 경우 루프 종료
    if num > a:
        break

print(cnt)

# 1789번 수들의 합
# https://www.acmicpc.net/problem/1789
반응형
반응형

 

1. 문제

    1439번 뒤집기 (https://www.acmicpc.net/problem/1439)

 

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다.

예를 들어 S=0001100 일 때,

  1. 전체를 뒤집으면 1110011이 된다.
  2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.

하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.

문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오.

 

 

2. 문제 포인트

  • 0과 1로 이루어진 문자열 입력
  • 모두 같은 숫자로 만들기 (0, 1 무관)
  • 한번에 근접한 문자 같이 뒤집기 가능

 

반응형

 

3. 접근법

  • 모든 숫자를 0으로 만들때와 1로 만들때를 구한 후 작은 값 출력
  • 전체를 1을 만드는 뒤집기 횟수 ==  split("0")으로 리스트를 생성한 후 만든 요소의 개수
  • 전체를 0을 만드는 뒤집기 횟수 ==  split("1")으로 리스트를 생성한 후 만든 요소의 개수
  • min()으로 두가지 경우 중 작은 값 출력

 

 

4. 결과 코드

import sys

a = sys.stdin.readline().strip()

# 1, 0을 기준으로 문자열을 나눠 리스트 만들기
## list comprehension을 이용하여 내용없는 요소는 제거
b = [bb for bb in a.split("1") if bb]
c = [cc for cc in a.split("0") if cc]

print(min(len(b), len(c)))

# 1439번 뒤집기
# https://www.acmicpc.net/problem/1439
반응형

+ Recent posts