Set 순회하기
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 39번째.
이제 셋(set)에서 요소를 추가, 확인 및 제거할 수 있게 되었으므로, 셋의 모든 요소를 순회하는 방법을 배워보겠습니다. 범위 기반 for 루프(range-based for loop)는 각 요소를 방문하는 가장 깔끔한 방법을 제공합니다.
set을 순회하는 방법은 다음과 같습니다:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}기억해야 할 가장 중요한 특징은 set이 자동으로 정렬된 상태를 유지한다는 점입니다. 위의 fruits set을 순회할 때, 출력은 삽입한 순서가 아니라 "apple", "banana", "cherry"가 됩니다. 이러한 자동 정렬은 std::set을 사용하는 주요 장점 중 하나입니다.
이러한 정렬된 반복은 수동으로 정렬할 필요 없이 데이터를 알파벳순 또는 숫자순으로 표시하는 데 세트를 완벽하게 만들어 줍니다. 숫자, 문자열 또는 기타 비교 가능한 타입을 사용하든 관계없이, 세트는 항상 이를 자연스러운 정렬 순서로 제시합니다.
챌린지
쉬움std::set에 단어를 추가한 다음, 이를 순회하며 알파벳 순서로 표시함으로써 std::set의 자동 정렬 기능을 시연하는 프로그램을 작성하세요. 이 챌린지는 set을 사용한 범위 기반 for 루프(range-based for loops)에 대한 이해와 set이 정렬된 상태를 유지하는 방식을 테스트합니다.
다음과 같은 입력이 제공됩니다:
- set에 추가할 단어의 개수를 나타내는 정수
n - 이어서 set에 삽입할 단어들을 나타내는
n개의 문자열
프로그램은 다음을 수행해야 합니다:
- 비어 있는
std::set<std::string>을 생성합니다. - 추가할 단어의 개수를 읽습니다.
- 루프를 사용하여 각 단어를 읽고
.insert()메서드를 사용하여 set에 삽입합니다. - 범위 기반 for 루프를 사용하여 set을 순회하며 각 단어를 출력합니다.
- 모든 단어를 출력한 후, set에 포함된 고유한 단어의 총 개수를 표시합니다.
다음과 같은 정확한 출력 형식을 사용하세요:
set의 각 단어에 대해 (알파벳 순서로):
[word]마지막 요약:
Total unique words: [count]set의 모든 요소를 순회하려면 for (const std::string& word : wordSet) 구문을 사용하는 범위 기반 for 루프를 사용하세요. set은 자동으로 단어를 알파벳 순서로 제시하며, 이는 std::set을 사용하는 주요 장점 중 하나를 보여줍니다. 입력에 중복된 단어가 제공되더라도 set에 의해 자동으로 무시되므로 고유한 단어만 표시된다는 점을 기억하세요.
치트 시트
범위 기반 for 루프를 사용하여 세트(set)의 모든 요소를 반복합니다:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}세트는 반복하는 동안 자동으로 정렬된 상태를 유지합니다. 요소는 삽입 순서가 아니라 자연스러운 정렬 순서(문자열의 경우 알파벳순, 숫자의 경우 수치순)로 표시됩니다.
직접 해보기
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
// 단어의 개수를 읽습니다
int n;
cin >> n;
// 단어를 저장할 빈 세트(set)를 생성합니다
set<string> wordSet;
// TODO: 여기에 코드를 작성하세요
// n개의 단어를 읽고 세트에 삽입하세요
// 범위 기반 for 루프를 사용하여 세트를 순회하며 각 단어를 출력하세요
// 고유한 단어의 총 개수를 출력하세요
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.