C#/C# (백준)
[C#] 백준 알고리즘 3052번, 나머지
서니션
2022. 8. 11. 18:28
내가 처음에 작성 한 것..
출력 값은 맞아서 오 맞나? 했더니 전혀 아니였음 -.- ;;
using System;
namespace 백준3052번
{
class Program
{
static void Main(string[] args)
{
// 10개의 수 입력
int[] arr = new int[10];
// 서로 다른 값을 넣어 줄 변수
int num = 0;
// arr에 수 넣어주기
for (int i=0; i<10; i++)
{
arr[i] = int.Parse(Console.ReadLine());
}
for (int i=0; i<10; i++)
if (arr[i] % 42 != 0)
{
num += 1;
}
Console.WriteLine(num);
}
}
}
오늘코딩님의 코드
분명 Contains는 알았는데 사용할 생각을 하나도 못했다 ㅡ.- 바보..
using System;
namespace 백준3052번_나머지
{
class Program
{
static void Main(string[] args)
{
// 입력받을 숫자를 담기 위한 리스트 numbers 선언
List<int> numbers = new List<int>();
// 정답을 저장할 리스트 answer 선언
List<int> answer = new List<int>();
// 한줄에 숫자 하나씩 10번 입력되므로 for으로 입력받는다
for(int i=0; i<10; i++)
{
// 숫자 입력받아서 곧장 42로 나눈 나머지를 numbers에 넣기
numbers.Add(int.Parse(ReadLine()) % 42);
}
// numbers에 저장된 나머지 중에서 같은 숫자가 몇 개인지 세기
// 첫번째 for문은 0부터 전체길이 -1만큼, 두번째 for문은 1부터 끝까지 돌려서 엇갈리게 만든다.
for (int i=0; i < numbers.Count-1; i++)
{
for (int j=i+1; j<numbers.Count; j++)
{
// 두개를 비교했는데 동일한 값이라면 다음 루프로 넘어감
if (numbers[i] == numbers[j])
{
continue;
}
else // 동일한 값이 아니라면
{
// answer 리스트에 해당 값이 포함되어있는지 검사함
if (!answer.Contains(numbers[i]))
{
answer.Add(numbers[i]);
}
}
}
}
// 위 과정이 끝나면 중복되지 않는 나머지들만 answer에 저장됨
// 그러나 마지막 숫자는 검사에 빠져있으므로 마지막 숫자만 따로 검사함
if (!answer.Contains(numbers[^1]))
{
answer.Add(numbers[^1]);
}
// answer 리스트의 총 개수를 출력하면 끝
Console.WriteLine(answer.Count);
}
}
}