개선 코드
또 새로푼 것
* 에러

-> 눈을 씻고 찾아봐도 21번째 무리가 없는데... 20번째에서 ;을 빠뜨렸다 !
시도
using System;
// 입력 : 첫 번째 분수 분자 nemer1, 분모 denom1 / 분자 numer2, denom2
// 출력 : 두 분수를 더한 분수 -> 기약 분수 / 정수 분자, 정수 분모 배열 answer
public class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//int[] answer = new int[] {};
int tempNumer = 0;
int tempDenom = 0;
// 1. 분수 더하기
// ?? 무조건 분모 곱해도 됨? 같은지 판단하는 로직 = 불필요? (결과 같을 거 같긴 함 어차피 나눠주니까)
// 2. 기약분수 만들기 : 분모 <- 반복문으로 나눠주기
// 분수 계산
if (denom1 == denom2) // 분모
{
tempNumer = numer1 + numer2;
tempDenom = denom1;
}
else
{
tempNumer = (numer1 * denom2) + (numer2 * denom1);
tempDenom = denom1 * denom2;
}
// 반복문
// 에러 : 0으로 나누기 실패
//for (int i = 0; i < 1000; i++)
for (int i = 1; i < 1000; i++)
{
if (tempDenom % i == 0) // 나눌 수 있으면
{
tempNumer /= i; // i로 나눈 값
tempDenom /= i;
}
}
int[] answer = new int[2] {tempNumer, tempDenom};
return answer;
}
}

로직 수정 : 분모 / 분자 전부 나누기
using System;
// 입력 : 첫 번째 분수 분자 nemer1, 분모 denom1 / 분자 numer2, denom2
// 출력 : 두 분수를 더한 분수 -> 기약 분수 / 정수 분자, 정수 분모 배열 answer
public class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//int[] answer = new int[] {};
int tempNumer = 0;
int tempDenom = 0;
// 1. 분수 더하기
// ?? 무조건 분모 곱해도 됨? 같은지 판단하는 로직 = 불필요? (결과 같을 거 같긴 함 어차피 나눠주니까)
// 2. 기약분수 만들기 : 분모 <- 반복문으로 나눠주기
// 분수 계산
if (denom1 == denom2) // 분모
{
tempNumer = numer1 + numer2;
tempDenom = denom1;
}
else
{
tempNumer = (numer1 * denom2) + (numer2 * denom1);
tempDenom = denom1 * denom2;
}
Console.WriteLine(tempNumer);
Console.WriteLine(tempDenom);
// 반복문
// 에러 : 0으로 나누기 실패
//for (int i = 0; i < 1000; i++)
for (int i = 1; i < 1000; i++)
{
// 아, 이게 분모만 나눠진다고 나누는 게 아니라 분자도 나눠야함 !!
if (tempDenom % i == 0 && tempNumer % i == 0) // 나눌 수 있으면
{
tempNumer /= i; // i로 나눈 값
tempDenom /= i;
}
}
int[] answer = new int[2] {tempNumer, tempDenom};
return answer;
}
}

* 로직 수정 : 반복문 (숫자 키우기 -> 숫자 줄이기)
2, 3 나눌 수 있는 경우 2를 먼저 나누면 3으로 나누지 x
-> 3부터 나누고 2 나누기 : o
using System;
// 입력 : 첫 번째 분수 분자 nemer1, 분모 denom1 / 분자 numer2, denom2
// 출력 : 두 분수를 더한 분수 -> 기약 분수 / 정수 분자, 정수 분모 배열 answer
public class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//int[] answer = new int[] {};
int tempNumer = 0;
int tempDenom = 0;
// 1. 분수 더하기
// ?? 무조건 분모 곱해도 됨? 같은지 판단하는 로직 = 불필요? (결과 같을 거 같긴 함 어차피 나눠주니까)
// 2. 기약분수 만들기 : 분모 <- 반복문으로 나눠주기
// 분수 계산
if (denom1 == denom2) // 분모
{
tempNumer = numer1 + numer2;
tempDenom = denom1;
}
else
{
tempNumer = (numer1 * denom2) + (numer2 * denom1);
tempDenom = denom1 * denom2;
}
Console.WriteLine(tempNumer);
Console.WriteLine(tempDenom);
// 반복문
// 에러 : 0으로 나누기 실패
//for (int i = 0; i < 1000; i++)
// 큰 수 -> 작은 수로 하면 될까?
// for (int i = 1; i < 1000; i++)
for (int i = 1000; i > 1; i--)
{
// 아, 이게 분모만 나눠진다고 나누는 게 아니라 분자도 나눠야함 !!
if (tempDenom % i == 0 && tempNumer % i == 0) // 나눌 수 있으면
{
tempNumer /= i; // i로 나눈 값
tempDenom /= i;
}
}
int[] answer = new int[2] {tempNumer, tempDenom};
return answer;
}
}
// 먼저 풀었던 것
using System;
// 입력 : 첫번째 분수 분자, 분모
// 입력 : 두 번째 분수 분자, 분모
// 출력 : 두 분수를 더한 값 -> 분자, 분모 배열
// 기약 분수 !
public class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//int[] answer = new int[] {};
// 분자 합
int numerSum;
// 분모 합
int denomSum;
// 분모 통일
// 분모 같을 때, 다를때
if (denom1 == denom2)
{
numerSum = numer1 + numer2;
denomSum = denom1 + denom2;
}
// 분모 1, 2 나눠지는지 확인 <- 어떤 수가 더 큰지 모름...
else if ()
{
}
else
{
denomSum = (denom1 * denom2);
numerSum = numer1 * denom2 + numer2 * denom1;
}
int[] answer = {numerSum, denomSum};
return answer;
}
}

// 다시 푼 것
using System;
// 입력 : 첫번째 분수 분자, 분모
// 입력 : 두 번째 분수 분자, 분모
// 출력 : 두 분수를 더한 값 -> 분자, 분모 배열
// 기약 분수 !
public class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
// 분자 합
int numerSum;
// 분모 합
int denomSum;
// 분모 통일
// 분모 같을 때, 다를때
if (denom1 == denom2)
{
numerSum = numer1 + numer2;
denomSum = denom1 + denom2;
}
// 분모 1, 2 나눠지는지 확인 <- 어떤 수가 더 큰지 모름... (denom2가 더 큼)
else if (denom2 % denom1 == 0)
{
// denom1을 denom2로 통일
int temp = denom2 / denom1; // 1로 나눈 몫 구해서, 곱해주기
denomSum = denom2; // denom1 곱한 값 결국 denom2 !
numerSum = numer1 * temp + numer2;
}
else
{
denomSum = (denom1 * denom2);
numerSum = numer1 * denom2 + numer2 * denom1;
}
int[] answer = {numerSum, denomSum};
return answer;
}
}
틀린 것 1 : 분모 같을때 -> 분모는 서로 더하면 안 됨 !
// denomSum = denom1 + denom2;
denomSum = denom1; // 더해주면 안 됨! (*로직 틀림*)

-> 33.3 점