본문 바로가기

프로그래밍(TA, AA)/알고리즘

(18)
[오픈소스] 비트코인과 블록체인 기술 요즘 핀테크에 대한 관심이 높습니다. Apple Pay를 시작으로 다양한 간편 결제 수단이 쏟아져 나오고 있고 국내에서도 인터넷 은행 설립이 추진되고 있습니다. 해외에선 다수의 IT 업체가 신용 대출이나 해외 송금과 같은 금융 서비스를 제공합니다. 이와 같은 움직임이 IT기술을 금융 서비스에 접목해 기존의 서비스를 개선하려는 것인 반면에 화폐 자체를 새로 정의하고 시스템 전체를 재구성하려는 비트코인과 같은 급진적인 움직임도 있습니다. 미국에선 영화 표나 비행기 표를 비트코인으로 구매할 수 있고 우리나라에도 몇 개의 비트코인 거래소가 개설되어서 비트코인을 현금과 교환할 수 있습니다. 지난 1~2년 사이 실리콘밸리엔 비트코인 기술을 기반으로 하는 여러 벤처 기업이 생겨나 비트코인이 현금을 대체할 날을 꿈꾸며..
[알고리즘] 파스칼의 삼각형 [문제] 아래 그림과 같은 규칙성을 가진다고 할 때, 열번호와 행번호를 주면 해당 번호에 위치한 수를 리턴하는 함수를 제작하시오(행과 열번호는 0부터 시작) 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1... 입력: 행번호, 열번호출력: 해당행, 열에 위치한 값 ex) 입력: 2 1, 출력: 2 [풀이] 파스칼의 삼각형이라는 유명한 문제이다. 규칙성을 보면,1) 각 행의 첫번째와 제일 마지막 수는 12) 1번 규칙 이외의 값들에 대해서는 바로 윗 행의 같은 열값과 왼쪽열값의 합 위 두가지 규칙성을 보면, 특히 두번째 규칙성을 보면 점화식형태로 되어 있고, 따라서 재귀호출을 쓰면 쉽게 구현이 되겠다. (최적의 구현방법이라는 것은 아니다) private s..
[알고리즘] 행렬 경로 문제 N x N개의 방에 임의의 양수가 들어있습니다. 왼쪽 위에서 출발해서 맨 오른쪽 아래로 이동하려 할 때, 지나치는 방들의 숫자의 합이 최대가 되는 경로를 택했을 때 나오는 최댓값을 구하시오. (단, 이동은 오른쪽 혹은 아래쪽으로만 가능하고, 위로 혹은 왼쪽으로 이동이 불가하고, 대각선으로의 이동도 불가능 합니다.) - 입력 첫째 줄에 테스트의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 구성된다. 첫째 줄에 가로칸의 개수 N이 주어진다. 그리고 그 다음줄부터 N개의 행값이 주어진다. 예) 1 4 6 7 12 5 5 3 11 18 7 17 3 3 8 10 14 9 - 출력 최적의 경로로 이동했을 때, 경로상의 값들을 더한 값을 출력한다. 예) 1번 테스트의 경우 더한 최댓값이 68인 경우 # 1:..
[알고리즘] 자료구조 배열과 문자열배열에 대한 질문이나 문자열에 대한 질문들은 서로 바꿀 수 있습니다. 다시 말해, 배열에 관한 것들은 문자열에 대한 문제로 바꿔 출제할 수도 있으며, 그 반대도 가능합니다. 해시 테이블해시 테이블은 효율적인 탐색을 위한 자료구조로서 키(Key)를 값(Value)에 대응시킵니다. 해시 테이블을 아주 간단히 구현하는 경우, 배열과 해시 함수만 있으면 됩니다. 객체와 키를 해시 테이블에 넣게 되면 우선 해시 함수가 키를 정수값으로 대응시키는데, 이 정수값이 배열의 인덱스로 쓰입니다. 객체는 배열의 해당 인덱스 위치에 저장됩니다. 하지만 이렇게 구현해서는 제대로 동작하지 않을 것입니다. 모든 가능한 키에 대해서 해시 함수가 계산해 내는 정수값이 유일해야 하기 때문입니다. 유일성이 보장되지 않을 경우..
[수학] 수학의 기본 정석 정리 {a1, a2, ..., an}의 부분집합의 개수는 => 2^n개 이다. 집합B의 원소의 개수가 n일때, 부분집합의 개수는 2^n개로 주어지는 이유는 임의로 B={a1, a2, a3, ... an}으로 두고, 우선 가능한 부분집합을 빈 공간 { }으로 보면, 여기에 각 원소를 넣을 것인지, 넣지 않을 것인지를 판단할 수 있습니다. 즉 n개의 모든 원소에 대해 부분집합을 꾸릴 수 있는 총 경우의 수는, 각 원소들을 포함시킬 것이냐, 제외시킬 것이냐 두 가지의 경울의 수를 각각 곱해줌으로써 구할 수 있습니다.예를 들어 빈 공간에 a1, a2, ... an이 모두 포함되지 않는다면 (모두 제외) 부분집합은 공집합이 될 것이고, 모두 포함시킨다면 부분집합은 n개의 원소가 모두 포함된 자기 자신으로 나올 것입니다..