C#

백준 C# 1193 문제 풀이

psb08 2024. 10. 7. 09:40
728x90
반응형

문제 링크 : https://www.acmicpc.net/problem/1193

목차

1 설명

 

2 내 코드

 

3 문제 풀이 해석 내용

 

4 실행 결과

 

설명

백준 실버 5 문제 입니다.

 

 

내 코드

string X = Console.ReadLine();
int x = int.Parse(X);

int lineCount = 0;
int sum = 0;

while (x > sum)
{
    lineCount++;
    sum += lineCount;
}

int index = x - (sum - lineCount);

if (lineCount % 2 == 1)
    Console.Write($"{lineCount - index + 1}/{index}");

else
    Console.Write($"{index}/{lineCount - index + 1}");

문제 풀이 해석 내용

입력 처리

string X = Console.ReadLine();
int x = int.Parse(X);

사용자로부터 문자열 형태로 입력을 받고, 이를 정수 x로 변환합니다.

 

 

변수 초기화

int lineCount = 0;
int sum = 0;

lineCount: 현재까지의 라인 수를 저장합니다.
sum: 현재까지의 합계를 저장합니다.

 

 

합계 계산

while (x > sum)
{
    lineCount++;
    sum += lineCount;
}

x보다 sum이 작을 동안 lineCount를 증가시키고, 그 값을 sum에 더합니다. 

이 과정은 sum이 x보다 커지거나 같아질 때까지 반복됩니다. 

결국 lineCount는 x가 포함된 대각선의 라인 수가 됩니다.

 

 

인덱스 계산

int index = x - (sum - lineCount);

index는 x가 그 대각선에서 어느 위치에 있는지를 나타냅니다. 

(sum - lineCount)는 현재 대각선의 마지막 숫자까지의 합에서 대각선의 길이를 빼서 x의 상대적인 위치를 계산합니다.

 

 

결과 출력

if (lineCount % 2 == 1)
    Console.Write($"{lineCount - index + 1}/{index}");
else
    Console.Write($"{index}/{lineCount - index + 1}");

lineCount가 홀수인지 짝수인지에 따라 분수를 다르게 출력합니다.
홀수일 경우, 대각선의 시작에서부터의 위치와 현재 위치를 기반으로 분수를 계산합니다.

짝수일 경우에는 반대 방향으로 계산하여 출력합니다.

 

 

실행 결과

실행 결과 1
실행 결과 2
실행 결과 3

'C#' 카테고리의 다른 글

백준 C# 5086 문제 풀이  (0) 2024.10.09
백준 C# 2869 문제 풀이  (0) 2024.10.08
백준 C# 2292 문제 풀이  (0) 2024.10.06
백준 C# 2903 문제 풀이  (0) 2024.10.05
백준 C# 11005 문제 풀이  (0) 2024.10.02