BaekJoon[C#]

기본 수학 1단계 2292

wny0320 2022. 10. 6. 15:24

백준 온라인 코딩 문제풀이

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

코드 참고

https://replit.com/@wny0320

 

wny0320 (박 상운)

Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.

replit.com

 

2292와 1193에 대해 다룸


2292

using System;
class Program
{
    static void Main(string[] args)
    {
        int Input = int.Parse(Console.ReadLine());
        int num = 1;
        int cnt = 0;
        for(int i = 0; num < Input; i++)
        {
            num += i * 6;
            cnt++;
        }
        if(Input == 1)
        {
            cnt++;
        }
        Console.WriteLine(cnt);
    }
}

벌집은 6, 12, 18, 24 식으로 증가

 

따라서 num에 초기값 1을 주고 i*6의 값을 계속 더해줘서 그 값이 Input 값보다 클 때까지 반복

 

반복할 때마다 cnt값 ++

 

만약 Input이 1이라면 for문이 돌아가지 않으므로 cnt++을 추가

 

중심으로부터의 거리가 칸 수, 따라서 cnt가 칸 수이다.

 


1193

using System;
class Program
{
    static void Main(string[] args)
    {
        int Input = int.Parse(Console.ReadLine());
        int num = 0;
        int block = 0;
        for(int i = 1; num < Input; i++)
        {
            num += i;
            block = i;
        }
        int frac = Input - (num - block) - 1;
        if(block % 2 == 0)
        {
            Console.WriteLine((1 + frac) + "/" + (block - frac));
        }
        else
        {
            Console.WriteLine((block - frac) + "/" + (1 + frac));
        }
    }
}

지그재그로 분수를 출력하는 문제이다

 

몇칸짜리인지 알기 위해 num에 i = 1부터 계속 더하기 시작해 Input보다 클때까지 돌림

 

block은 반복문이 멈춘 시점의 칸 수를 알기 위해 block = i

 

frac은 칸수에 따라 늘거나 줄어드는 수(그 줄의 몇번째 칸인지)

 

그리고 짝수이면 오른쪽 위에서 왼쪽 아래로(분자가 커지고 분모가 작아지는 방향)

 

홀수이면 왼쪽 아래에서 오른쪽 위로(분자가 작아지고 분모가 커지는 방향) 이므로

 

if문을 통하여 분자와 분모의 출력을 설정함

'BaekJoon[C#]' 카테고리의 다른 글

기본 수학 1단계 10250  (0) 2022.10.12
기본 수학 1단계 2869  (0) 2022.10.10
기본 수학 1단계 1712  (0) 2022.10.05
문자열 단계 1316  (0) 2022.10.04
문자열 단계 2941  (0) 2022.10.03