[백준] 10807번 개수세기

권태형·2023년 12월 25일

알고리즘

목록 보기
28/33

드디어 1차원 배열문제로 넘어왔다. 배열내 요소 중 3번째 콘솔입력 값과 같은 요소가 몇개있는지 찾는 문제이다.


나의 풀이

간단하게 생각하면 읽고 for문을 이용해 배열의 각 요소를 하나 하나 돌면서 비교 분석해서 같은 것이 있을때 마다 카운트를 추가해주면 된다.

int a = int.Parse(Console.ReadLine()!);
int[] b = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int c = int.Parse(Console.ReadLine()!);
int d = 0;

for(int i = 0; i < a; i++){
    if(b[i] == c) d++;
}

Console.WriteLine(d);

문제를 보자마자 떠올린 방법은 위와같이 하나하나 다 변수에 담고 모든 변수를 사용해가면서 일일히 풀이하는 방법이었다. 이후 다름사람의 풀이를 보았을때 아 당연히 있는 내장함수를 사용하면 더 빠르게 해결할 수 있는데 왜 난 내 구현력을 1차원적으로 생각했나 싶은 고민을 하게 되었다.


다른사람 풀이

string R()=>Console.ReadLine();R();string r=R(),c=R();Console.Write(r.Split().Count(x=>x==c));

아주 짧은 코드였다. 내 코드의 절반 이상 짧은 코드였고, 신선한건 Console.ReadLine()을 R()의 무명 메서드를 이용해 여러번 쓰일 반복적인 동작을 짧게 줄였다. 또한 첫번째 R()를 그냥 동작하게 함으로써 처음으로 들어올 콘솔입력값 배열요소의 개수를 굳이 사용하지 않고, 두 번재 콘솔값부터 변수에 담아서 사용했으며, LINQ의 Count()함수를 이용해 굳이 for문을 돌리지 않고 배열내 요소중 c와 같은 값이 같은 요소의 개수를 세는 방식을 사용하였다.

이 코드를 보면서 아무래도 내가 LINQ가 익숙하지 않아서 위와같은 방식에 착안점을 두지못한점도 있고, 바로 떠올린 구동가능한 코드를 한번더 생각하지 않고 바로 작성하기 시작한 점이 부족했던 것 같다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글