728x90
반응형
문제 링크 : https://www.acmicpc.net/problem/1193
목차
1 설명
2 내 코드
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가 홀수인지 짝수인지에 따라 분수를 다르게 출력합니다.
홀수일 경우, 대각선의 시작에서부터의 위치와 현재 위치를 기반으로 분수를 계산합니다.
짝수일 경우에는 반대 방향으로 계산하여 출력합니다.
실행 결과



'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 |