질문글은 https://gall.dcinside.com/ps/22568
이렇게 고치니 364ms로 통과함.
개선점은 다음의 두가지임.
1. binSearch할 때 배열의 복사를 피함. 님이 쓰신 코드에선 binSearch가 재귀될 때마다 배열을 다시 복사해서 새로 호출하는데, 이게 한두번이면 몰라도 쿼리가 10만개나 있는 상황에선 시간 손실이 어마어마하다. 그래서 배열은 냅두고 인덱스만 조작해서 이진탐색을 수행하도록 고침.
2. StringBuilder를 사용해서 출력함. 10만개의 글자를 출력해야해서 빠른 출력이 유의미한 속도차이를 낼 것 같다. 쓰는 방법은 코드 참조.
ps를 f#로하는 이유가 있음?
PS는 관심있지만 대회엔 관심없어서(나갈 수 있는 대회도 코드잼말곤 딱히 없음) + 백준이 하스켈을 지원안해줘서
함수형 언어로 알고리즘 문제 풀고 싶으면 선택지가 많이 없음
퇴근하고 한번 천천히 확인해봄 ㄳㄳ
StreamReader안쓰고 Console로 읽고 HashSet 쓰면 260정도 나오는듯
printfn -> Console.Write로 고치니 180ms대까지 줄었음