C++ 자료구조론(이석호)

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 1.6 표준 템플릿 라이브러리 연습문제

ShuYan 2023. 8. 26. 10:12

1. 상이한 원소의 모든 순열을 출력할 수 있도록 프로그램 1.14를 수정해 보라. 순열을 생성하기 전에 원소 리스트를 오름파순으로 정렬하고 수행하라. 정렬을 하기 위해서는 [start, end)범위에 있는 원소를 오름차순으로 정렬하는 STL 알고리즘

[ sort(start, end) ]을 이용하라. 코드를 테스트해 보라.

 

* 9번째 줄 코드가 정렬 코드

 

 

 

 

2. 상이한 원소의 모든 순열을 출력할 수 있도록 프로그램 1.14를 수정해보라. 먼저 처음 순열보다 사전식으로 큰 순열을 행성하기 위해 next_permutation을 이용해서 수행하고 다음에는 처음 순열보다 사전식으로 작은 순열을 생성하기 위해 STL 알고리즘 prev_permutation을 이용해서 수행하라.

 

- next_permutation 이용

  위에 코드가 있으므로 생략

 

- prev_permutation 이용

// 결과

* https://jaimemin.tistory.com/130 님의 풀이도 참고 !

 

 

 

 

3. 상이한 원소의 모든 순열을 출력할 수 있도록 프로그램 1.14를 수정해보라. 이것을 수행할 때 next_permutationfalse값을 반환하면 순차 [start, end)가 사전식으로 가장 작은 순차라는 사실을 이용하라. 그래서 그 다음 계속적인 next_permutation 호출은 필요한 순열을 모두 얻게 된다. 코드를 테스트 해보라.

 

- false 값을 반환하면 사전식으로 순차적 순열이 생김.

- 1번 문제와 동일

 

 

 

 

4. STL 알고리즘 count는 다음과 같은 구문을 가지고 있다.

count(start, end, value)

이 함수는 [start, end) 범위에 있는 value의 출현 빈호를 반환 한다. 이 알고리즘을 이용해서 정수 배열 a[0:n-1]에 있는 a[0]의 출현 빈도를 출력하는 프로그램을 작성하라. 코드를 테스트해 보라.

 

//결과

3

 

 

5. STL 알고리즘 fill은 다음과 같은 구문을 가지고 있다.

fill(start, end, value)

이 함수는 [start, end) 범위에 있는 모든 위치를 value로 설정한다. 명세된 크기의 정수 배열을 생성하고 이 배열의 모든 위치를 0으로 초기화 하는 프로그램을 작성하라. 코드를 테스트 해보라.

 

// 결과

apple

xxxxx