이번 문제도 간단하다.
10개의 숫자가 주어지는데, 그 숫자들을 42로 나눈 나머지들 중에서
서로 다른 숫자가 몇개인지를 출력하면 되는 문제이다.
뭐 라이브러리를 활용하지 않는다고 치면,
일단 각 숫자를 42로 나눈 나머지들을 배열로 저장하고
또 하나의 배열을 만들어서 새로 발견되는 숫자들을 저장한 후
배열의 길이를 출력하면 될 것 같다.
다만 이렇게하면 이중 for문이 나올 것 같고
이미 로직은 떠올릴 수 있다는 가정 하라면 라이브러리를 사용하는 것도
아이디어의 발전에 도움이 될거라 생각하여 다르게 진행헀다.
먼저 42로 나눈 값들을 저장한 다음 중복을 제거하고,
배열의 길이를 반환하기만 하면 되는 방법이다.
using System;
using System.Linq;
namespace unicoti {
class Program {
static void Main(string[] args) {
int[] inputArr = new int[10];
for(int i = 0; i < 10; i++) {
int.TryParse(Console.ReadLine(), out inputArr[i]);
inputArr[i] %= 42;
}
Console.WriteLine(inputArr.Distinct().Count());
}
}
}
말한대로 한 줄씩 읽어서 42로 나눈 나머지를 저장하고,
중복수를 제거하고 (Distinct) 길이(Count)를 반환하여 완성했다.
오늘의 느낀점)
역시 Linq가 편하긴 하다. 조금이라도 복잡한 알고리즘을 짜게 되면
단편적으로 배열이 필요하기 마련인데, 배열으로 알고리즘을 짜다보면
나오는 게 다 엇비슷하다. 중복 제거나 길이나 특정 수 세기 등 비슷한 코드가 필요한데
Linq가 모두 지원해줘서 편한 것 같다.
하루에 1문제씩 풀기 시작한 게 유니티는 나름대로 잘 다루지만
순수 C#은 모르는 것 같아서 그런거였는데 이제 순수 C#도 편하게 다루는 것 같다.
이렇게 되면 이제 목적이 해결된 것이기도 하다.
그래도 알고리즘 공부를 한다는 목적으로 계속 시도하겠다.
이번 년도가 끝날쯤이면 110문제 정도 더 풀었을텐데 어디쯤 가있을지 궁금하다.
어차피 취업하기 전까지는 시간이 있으니 하루에 한문제씩만 풀어도
그때쯤이면 1300문제는 넘어간다.
뭐 취업을 목표로 할 때 쯤이면 하루에 몇문제씩 풀고 있을테니 걱정은 없다.
다만 꾸준히 했으면 좋겠다.
이상으로 도움이 되었길 바라며,
끝.
'코딩테스트 (C#)' 카테고리의 다른 글
백준 1546 : 평균 - C# 풀이 (4) | 2024.09.19 |
---|---|
백준 10811 : 바구니 뒤집기 - C# 풀이 (0) | 2024.09.13 |
백준 5597 : 과제 안 내신 분..? - C# 풀이 (0) | 2024.09.12 |
백준 10813 : 공 바꾸기 - C# 풀이 (0) | 2024.09.11 |
백준 10810 : 공 넣기 - C# 풀이 (0) | 2024.09.10 |
댓글