반응형
[ 문제 ]
알파벳 소문자 d, b, q, p는 상하좌우로 뒤집으면 d, b, q, p 중 하나로 변하는 특별한 성질이 있다. 그 성질을 정리하면 다음과 같다.
- d를 상하로 뒤집으면 q로, 좌우로 뒤집으면 b로 변한다.
- b를 상하로 뒤집으면 p로, 좌우로 뒤집으면 d로 변한다.
- q를 상하로 뒤집으면 d로, 좌우로 뒤집으면 p로 변한다.
- p를 상하로 뒤집으면 b로, 좌우로 뒤집으면 q로 변한다.
d, b, q, p 중 하나가 들어 있다. 이 격자에 들어 있는 각각의 알파벳을 주어진 방향으로 뒤집은 결과를 구해보자.
열의 격자의 각 칸에
[ 코드 ]
1. 처음 푼 코드(if문 사용)
StreamReader input = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter result = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[] s = input.ReadLine().Split();
int N = int.Parse(s[0]);
int D = int.Parse(s[1]);
string reverse = "";
for (int i = 0; i < N; i++)
{
string alpabet = input.ReadLine();
if (D == 1)
{
foreach(char c in alpabet)
{
if(c == 'd')
{
reverse += 'q';
}
if(c == 'b')
{
reverse += 'p';
}
if (c == 'q')
{
reverse += 'd';
}
if (c == 'p')
{
reverse += 'b';
}
}
}
else if(D == 2)
{
foreach (char c in alpabet)
{
if (c == 'd')
{
reverse += 'b';
}
if (c == 'b')
{
reverse += 'd';
}
if (c == 'q')
{
reverse += 'p';
}
if (c == 'p')
{
reverse += 'q';
}
}
}
reverse += "\n";
}
result.Write(reverse);
result.Flush();
input.Close();
result.Close();
2. 다른 코드 참고한 코드
StreamReader input = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter result = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[] ND = input.ReadLine().Split();
int N = int.Parse(ND[0]);
int D = int.Parse(ND[1]);
for (int i = 0; i < N; i++)
{
string s = input.ReadLine();
char[] charS = s.Select(c => D == 1 ? Vertical(c) : Horizontal(c)).ToArray();
string reverseS = new string(charS);
result.WriteLine(reverseS);
}
result.Flush();
input.Close();
result.Close();
char Horizontal(char c) => c switch
{
'd' => 'b',
'b' => 'd',
'q' => 'p',
'p' => 'q'
};
char Vertical(char c) => c switch
{
'd' => 'q',
'b' => 'p',
'q' => 'd',
'p' => 'b'
};
- 너무 간단해져서 놀랐다.. 흠 앞으로 애용해야지
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/switch-expression
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/30032
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 1436번 영화감독 숌 (0) | 2024.02.17 |
---|---|
[C#] 백준 1018번 체스판 다시 칠하기 (0) | 2024.02.17 |
[C#] 백준 19532번 수학은 비대면강의입니다 (2) | 2024.02.16 |
[C#] 백준 2485번 가로수 (0) | 2024.02.15 |
[C#] 백준 1735번 분수 합 (0) | 2024.02.15 |