반응형
오랜만에 푸는 구현 문제!
알고리즘
Distinct를 사용해서 중복된 숫자를 없애주었다. 만약 결과가 학생 수와 같다면 이는 학생번호가 서로 다르다는 뜻이므로 결과를 출력하도록 하였다.
1212345
1212356
0033445
예를 들어 첫번째로 5,6,5의 Distince 결과는 5,6이므로 2가지가 되니까 학생수와 다르니까 정답이 아니다. 두번째로 45,56,45의 결과또한 2가지이므로 정답이 아니다. 마지막 세번째로는 345,356,445가 되니까 answer을 출력하고 return되도록 하였다.
string[] numbers = new string[n];
for (int i = students[0].Length - 1; i >= 0; i--)
{
int count = 0;
for (int j = n-1; j>=0; j--)
{
string number = students[j][i].ToString();
numbers[count] = number + numbers[count];
count++;
}
if (numbers.Distinct().Count() == students.Count())
{
Console.Write(answer);
return;
}
answer++;
}
마지막으로 모든 경우의 수를 돌렸는데 다 학생 번호가 같은 경우의 수를 고려해 0을 출력하도록 해야 한다.
Console.Write(0);
코드 전문
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace baek2
{
class Program
{
public static void Main()
{
int n = int.Parse(Console.ReadLine());
List<string> students = new List<string>();
for(int i = 0; i<n; i++)
{
string input = Console.ReadLine();
students.Add(input);
}
int answer = 1;
string[] numbers = new string[n];
for (int i = students[0].Length - 1; i >= 0; i--)
{
int count = 0;
for (int j = n-1; j>=0; j--)
{
string number = students[j][i].ToString();
numbers[count] = number + numbers[count];
count++;
}
if (numbers.Distinct().Count() == students.Count())
{
Console.Write(answer);
return;
}
answer++;
}
Console.Write(0);
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
C# - 1966 +) 풀이 (0) | 2024.03.17 |
---|---|
백준 C# - 11286 +) 눈물의 풀이 (2) | 2024.03.17 |
백준 C# - 1987 (0) | 2024.03.12 |
백준 C# - 11725 +) 풀이 (0) | 2024.03.04 |
백준 C# - 17219 (1) | 2024.02.24 |
댓글