181121_(水) - PassionOfStudy/Algorithm GitHub Wiki
Programmers_(Moke Test(Full Search))
Moke Test
모의고사(완전탐색)My Solution
처음에 수포자 A,B,C가 찍는 번호의 패턴을 각각 함수를 통해서 구현해 주었다. 그리고 만들어진 패턴을 정답과 비교하여 맞은 정답의 개수를 리턴하는 함수를 구현했다. 각각 1(A), 2(B), 3(C)에 대해서 정답의 개수를 testerAnswer라는 Dictionary에 키와 값을 저장하고, sorted(by:)
메서드를 이용해서 제일 많은 답을 맞힌 개수를 찾고, testerAnswer의 모든 요소에 for 루프를 통하여 접근하여 맞는 인덱스(수포자번호)를 리턴하였다.
Other Solution
Best로 선택한 해결방법은 수포자에 대한 일정한 패턴을 배열에 저장하고, makeAnswer함수 하나를 가지고 매개변수에 따른 패턴배열을 리턴하는 심플한 방법이었다. 처음보는 point함수도 enumerated()
메서드를 가지고 따로 변수를 만들지 않고 맞은 개수를 리턴하였다.
다른 풀이중에 괜찮았던 것은 처음보는 dropLast()
를 가지고 패턴을 만들어 내는 것이었다.
%
패턴을 만드는 방법이 저마다 달랐던 것이 신기했다. 물론 그중에는 나처럼 처음부터 다 만드는 비효율적인 방법도 있고, 일정한 패턴을 배열에 저장해놓고, 필요할 때 가져다가 사용하는 효율적인 방법도 있다. 다음에는 패턴에 대한 문제가 나왔을 때, 일정한 패턴을 저장하고 가져다 쓰는 방식으로 접근해봐야겠다.
Best해결 방법으로 선택한 풀이에서 중복을 제거한 함수의 기능과 단일 기능을 수행하는 함수로 분리한 코드가 보며 너무 기능구현에만 초점을 두고 문제를 푼 것이 부끄러웠다. 그리고 클로저를 이용한 map
과 reduce
를 적절히 사용하는 것을 보며 배울점이 많았다.