응 모 MOOC 온라인강의 과제야.
문제 자체는 많이들 봤을법한 거야.
(The ((quick) (brown) (fox)) jumps (over the lazy dog.))
이런 문자열이 있으면 ( ) 짝 맞나 안맞나 검사하는 걸 만드는거야.
이걸 병렬처리로 하는 알고리즘과 프로그램을 만드는 건데, 테스트 대상은 길이 100,000,000 짜리 문자열이고, 병렬화 Threshold 는 길이 10,000 야.
병렬화되지 않은 () 짝맞추기는 곧잘 해봐서 만만하게 생각했는데, 나한테는 이게 생각보다 매우 어려웠어 OTL
이 과제는 문제 3개로 이루어져 있고, 이게 문제 3개중 하나인데, 지금은 제출기한이 지나서 6월 말까지 20% 감점 당하고 제출이 가능한 상태야.
역시 무식하면 공부해야 돼 OTL
병렬화는 뭘까... 그런 거 없는 프로그램은 이번 학기에 짜 보긴 했는데
응 말 그대로 저 문자열을 쪼개서 다른 Thread 에서 처리하고 나중에 결과를 합쳐서 뽑는거야.
문자열을 10000개씩 쪼개서 각자 처리한 다음 합치는거임?
이번학기에 쓰레드 맛보기만 했는데 실용적인 예제가 없어서 곤란했는데 나중에 한번 풀어보고 싶네요
응 칼같이 10,000 단위로 쪼개는 건 아니고, 여러 방법을 써서 길이 10,000 이하인 문자열로 쪼개서 여러 Thread 로 돌리는거야.
근데 상상이 잘 안되네요 병렬화 안 하면 그냥 문자 억개 스캔하면서 괄호만 스택에 때려박을 거 같은데 이걸 쪼개서 한다니..?
이 과제의 다른 문제는 주어진 금액에 동전이 주어지면 이걸 조합하는 방법 수를 병렬화 하는거랑 아예 듣도보도 못한 새로운 문제를 병렬화해서 푸는 게 있는데, 나한테는 아예 듣도 보도 못한 새로운 문제가 훨씬 쉬웠어 OTL
강좌 이름 공유 좀 ㅎㅎㅎ
https://www.coursera.org/learn/parprog1
이거야.
퍄 감사합니당