백준 1차원배열 3052
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace question
{
internal class question
{
static void Main(string[] args)
{
int[] nums = new int[10];
int F = 1;
for(int v = 0; v < 10; v++)
{
nums[v] = int.Parse(Console.ReadLine()) % 42;
}
for (int i = 0; i < nums.Length-1; i++)
{
for(int j = i+1 ; j < nums.Length; j++)
{
if( nums[i] > nums[j])
{
int tram = nums[j];
nums[j] = nums[i];
nums[i] = tram;
}
}
}
for (int i = 0; i < nums.Length-1; i++)
{
if (nums[i] != nums[i + 1])
{
F++;
}
}
Console.Clear();
Console.WriteLine(F);
}
}
}
나머지
-
10개의 입력을 받은뒤, 42의 나머지를 구한뒤, 서로같은 숫자인지 여부를 따져서, 총 몇종류의 나머지가 있는지를 출력하는 문제입니다.
- 입력 : 첫째줄부터 10째줄까지 10개의 숫자를 입력받습니다.
- 조건
- 먼저, 42의 나머지를 구합니다.
- 숫자를 따로 체크하기보다는 2562번에서 사용한 차순정리를 이용해서 같은 숫자끼리 모아두겠습니다.
- 모아둔 숫자를 체크해서 앞의숫자와 뒤의 숫자가 달라지면 카운트를 올려서 나머지 숫자가 몇개인지 체크하겠습니다.
- 출력 : 구해진 서로다른 나머지 숫자의 갯수를 출력해줍니다.
가장먼저, 10개의 입력을 받아야 한다고 주어졌기때문에, 미리 집합을 선언해서 10개가 들어간다고 선언해줍니다. for반복문과 int.Parse를 통해 입력받은 값들을 바로바로 int형으로 변환하고, 42로 나눴을때의 나머지값을 계산한뒤 미리 말들어준 nums라는 집합에 모아둡니다.
입력받아서 조건에 맞게 가공된 데이터를 2562번에서 사용했던 차순정리 방법으로 작은수부터 큰수 순서로 정리 해줍니다.
서로다른 나머지 숫자를 세는 int F의 경우 시작 숫자가 1인 이유는 모든 나머지가 0이라도 1개 이기 때문입니다.
차순정리를 통해 같은 숫자끼리 정리가 된 상황에서, if조건문을 통해 앞에숫자와 뒤에 숫자가 달라지는 지를 체크해서, 만약 달아진다면 F의 숫자가 1씩증가해서 총 몇개의 다른 나머지 숫자가 존재하는지를 계산합니다.
계산이 완료된 F는 출력해줍니다.