[C#] 백준 1193번 분수찾기
2021. 12. 21. 22:01ㆍ코딩테스트 문제 풀이/[백준] 기본 수학1
728x90
반응형
정답 코드 :
using System;
namespace _3
{
internal class Program
{
static void Main(string[] args)
{
int input = Convert.ToInt32(Console.ReadLine());
int x, y;
int xValue = 1;
int yValue = 1;
int count = 1;
bool isOdd = false;
bool go = false; //대각선으로 내려가겠다
bool turn = false; //아래 혹은 옆으로 이동하는 작업을 했는가 판단해주는 값
int check;
while (count < input)//(0,1), 2/1, isXzero == true
{
if(xValue == 1 || yValue ==1)
{
check = xValue + yValue;
isOdd = (check % 2 == 0) ? true : false;
if(turn)
go = false;
}
if(isOdd)
{
if (go)
{
yValue += 1;
xValue -= 1;
if(turn == false)
turn = true;
}
else
{
yValue += 1;
go = true;
turn = false;
}
count++;
}
else
{
if (go)
{
xValue += 1;
yValue -= 1;
if (turn == false)
turn = true;
}
else
{
xValue += 1;
go = true;
turn = false;
}
count++;
}
}
Console.WriteLine(xValue + "/" + yValue);
}
}
}
분자와 분모의 합을 통해 합이 짝수면 홀수번째, 홀수면 짝수번째로 만들었다.
예를 들어 1/1 은 1+1 = 2 짝수 이므로 홀수번째에 있는 칸이다.
분모 혹은 분자가 1일때 오른쪽 혹은 아래쪽으로 이동(RETURN) 시키고 대각선(GO)으로 이동시킨다 이렇게 격자에 하나씩 채우는 방식으로 찾는다.
근데 스터디모임에서 여자친구가 푼 모습을 봤는데 홀수 일때 짝수 일때 각각 규칙을 만들고 해당 규칙이 실행되도록 하는것이 훨씬 효율적인 코드인거같다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 기본 수학1' 카테고리의 다른 글
[C#] 백준 2775번 부녀회장이 될테야 (0) | 2021.12.21 |
---|---|
[C#] 백준 10250번 ACM 호텔 (0) | 2021.12.21 |
[C#] 백준 2869번 달팽이는 올라가고 싶다 (0) | 2021.12.21 |
[C#] 백준 2292번 벌집 (0) | 2021.12.21 |
[C#] 백준 1712번 손익분기점 (0) | 2021.12.21 |