반응형
[ 문제 ]
상근이는 2863번에서 표를 너무 열심히 돌린 나머지 5와 6을 헷갈리기 시작했다.
상근이가 숫자 5를 볼 때, 5로 볼 때도 있지만, 6으로 잘못 볼 수도 있고, 6을 볼 때는, 6으로 볼 때도 있지만, 5로 잘못 볼 수도 있다.
두 수 A와 B가 주어졌을 때, 상근이는 이 두 수를 더하려고 한다. 이때, 상근이가 구할 수 있는 두 수의 가능한 합 중, 최솟값과 최댓값을 구해 출력하는 프로그램을 작성하시오.
[ 코드 ]
1. Replace를 이용한 코드
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[] arr = sr.ReadLine().Split();
string a = arr[0];
string b = arr[1];
int min = int.Parse(a.Replace('6', '5')) + int.Parse(b.Replace('6', '5'));
int max = int.Parse(a.Replace('5', '6')) + int.Parse(b.Replace('5', '6'));
sw.Write($"{min} {max}");
sw.Flush();
sw.Close();
sr.Close();
2. 참고한 코드
- 튜플 변수를 이용해 최솟값, 최댓값 저장해서 합
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[] arr = sr.ReadLine().Split();
(string, string) a = (string.Empty, string.Empty);
(string, string) b = (string.Empty, string.Empty);
for (int i = 0; i < arr[0].Length; i++)
{
a.Item1 += (arr[0][i] == '6') ? '5' : arr[0][i];
a.Item2 += (arr[0][i] == '5') ? '6' : arr[0][i];
}
for (int i = 0;i < arr[1].Length; i++)
{
b.Item1 += (arr[1][i] == '6') ? '5' : arr[1][i];
b.Item2 += (arr[1][i] == '5') ? '6' : arr[1][i];
}
int min = int.Parse(a.Item1) + int.Parse(b.Item1);
int max = int.Parse(a.Item2) + int.Parse(b.Item2);
sw.Write($"{min} {max}");
sw.Flush();
sw.Close();
sr.Close();
최소, 최대만 구하는거라 6을 모두 5로 바꾸는게 최솟값이고, 5를 모두 6으로 바꾸는게 최댓값이다.
튜플을 자주 사용 안해봐서 많이 사용해봐야겠다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/2864
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 4796번 캠핑 (0) | 2024.03.10 |
---|---|
[C#] 백준 14659번 한조서열정리하고옴ㅋㅋ (0) | 2024.03.10 |
[C#] 백준 14720번 우유 축제 (0) | 2024.03.07 |
[C#] 백준 10162번 전자레인지 (0) | 2024.03.06 |
[C#] 백준 1408번 24 (0) | 2024.03.06 |