열렬히.뛰기

Cpp module 09

école 42 > Cpp part.1 > 42 : Cpp 모듈 > Cpp module 09

STL을 응용해 여러가지 문제를 푸는 과제

ex00

사용하는 자료구조 : 맵

  • 파일 2개가 주어짐 (하나는 문제에 있음)
  • 1번째 파일 (data.csv) = date & exchange_rate로 구성 (문제에서 증정)
  • 2번째 파일 (—-.txt)= date & value로 구성 (우리가 만들어야 함)

출력 결과는 다음과 같다.

cpp
(날짜) => value = (value) * (exchange_rate)

2011-01-03 => 3 = 0.9
2011-01-03 => 2 = 0.6
2011-01-03 => 1 = 0.3
2011-01-03 => 1.2 = 0.36
2011-01-09 => 1 = 0.32
Error: not a positive number.
Error: bad input => 2001-42-42
2012-01-11 => 1 = 7.1
Error: too large a number.

ex01

사용하는 자료구조 : 스택

스택을 이용해 reverse polish notation = 후위표현식 계산기를 만드는 문제.

ex02

사용하는 자료구조 : 벡터, 리스트, 덱

포드-존슨 알고리즘을 이용해 정렬을 하는 문제

cpp
ford-johnson algorithm 정리

1. 정렬해야 하는 배열을 2개 씩 짝을 지어 pair의 배열로 묶는다.
	a. 원소의 개수가 홀수 개라면 마지막 원소는 따로 둔다.
2. 서로 짝지어진 원소의 크기를 비교하여 큰 수와 작은 수를 구분한다.
3. pair 중에서 큰 수를 기준으로 pair 배열을 정렬한다.
	(이 때 pair 배열을 정렬할 때에도 재귀를 이용하여 mergeInsertionSort를 
	 통해 정렬하는 것이 이상적이겠지만 타입변환, 스왑 등 여러 문제가…)
4. 정렬된 pair 배열에서 큰값과 작은 값을 다른 배열에 담아둔다.
5. 큰값들을 담아둔 배열에 작은 값을 담은 배열의 원소들을 앞에서 구한 방법의 순서대로 
		하나씩 탐색해서 담는다.
		(1, 3, 2, 5, 4, 11, 10, 9, 8, 7, 6, 21, 20 …)
6. 원소의 개수가 홀수였을 때 따로 저장해둔 마지막 원소를 이진탐색하여 삽입한다.