이번에 다뤄볼 예제는 가장 매력적인 분야의 하나인 확률 시뮬레이션 분야입니다~
컴퓨터 기술이 발전하면서 우리에게 가장 큰 이득을 가져다 준 분야가 시뮬레이션이지 않을까 싶은데요, 그 기반이 되는 것은 랜덤한 환경을 가정한 여러 번의 시뮬레이션을 거쳐서 평균 값들을 구하는 등 그 결과를 예측할 수 있게 된 것이라 할 수 있습니다.
Continue reading
두 수 a, b가 주어졌다고 할 때, 이 정수들을 나누어 떨어지게 하는 가장 큰 정수는 무엇일까요? 네, 바로 최대공약수입니다. 개념 자체야 너무나도 쉽게 와닿았는데, 이것을 코딩한다는 것은 굉장히 신선했습니다.
Continue reading
사실 살면서 이런걸 궁금해 할 이유가 있을까 싶긴 하지만, 그래도 정말 뇌를 깨워주는 문제 같아서 소개하려고 합니다.
은 몇 개의 연속된 꼬리 0을 가지고 있을까요?
연속된 꼬리 0이라는 정의는, 만약 130500이면 연속된 꼬리 0은 2개이고, 10000은 4개의 연속된 꼬리 0을 가지는 것입니다. 즉, 주어진 이 10의 몇승으로 나눠 떨어지는가의 문제입니다.
Continue reading
아마 컴퓨터를 사용하는 가장 큰 이유 중의 하나는 컴퓨터가 우리를 대신에 노가다를 뛰어주기 때문이지 않을까 싶네요 :) Computer Science 분야에서 때로는 정해진 해가 있는 것이 아니고, 모든 경우를 다 찾아봐야만 Optimal solution을 찾을 수 있는 경우들이 있는데, 이럴 경우 Exhaustive search를 한다고 표현합니다.(막찾기?)
여러 활용 예제들이 존재하겠지만, 우선은 가장 눈에 보이는 문제를 풀어보죠. A라는 집합이 주어졌습니다. 이 때 모든 부분집합을 출력해 봅시다 :)
제가 생각하는 이 문제의 접근법은 각 원소별로 있을 때와 없을 때를 나눠서 생각하는 것입니다. 그러면 만약 [a, b, c]라는 집합이 있으면, 개의 부분집합이 생기겠죠? 이런 경우에 많이 쓰는 방법은 recursive함수를 이용하는 것입니다.
Continue reading
가장 인기있는 문제 중의 하나가 Palindrome(우리나라 말로 회문이라고 하네요 ^^) 문제입니다.
앞에서부터 읽나 뒤에서부터 읽나 동일한 단어를 의미하는데요,
우리나라말로 유명한 것은 “다시합창합시다” 뭐 이런 추억돋는 문장들이 있겠네요 ㅋㅋ
Continue reading