Menu
Coddy logo textTech

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을 사용하는 주요 장점 중 하나입니다.

이러한 정렬된 반복은 수동으로 정렬할 필요 없이 데이터를 알파벳순 또는 숫자순으로 표시하는 데 세트를 완벽하게 만들어 줍니다. 숫자, 문자열 또는 기타 비교 가능한 타입을 사용하든 관계없이, 세트는 항상 이를 자연스러운 정렬 순서로 제시합니다.

challenge icon

챌린지

쉬움

std::set에 단어를 추가한 다음, 이를 순회하며 알파벳 순서로 표시함으로써 std::set의 자동 정렬 기능을 시연하는 프로그램을 작성하세요. 이 챌린지는 set을 사용한 범위 기반 for 루프(range-based for loops)에 대한 이해와 set이 정렬된 상태를 유지하는 방식을 테스트합니다.

다음과 같은 입력이 제공됩니다:

  • set에 추가할 단어의 개수를 나타내는 정수 n
  • 이어서 set에 삽입할 단어들을 나타내는 n개의 문자열

프로그램은 다음을 수행해야 합니다:

  1. 비어 있는 std::set<std::string>을 생성합니다.
  2. 추가할 단어의 개수를 읽습니다.
  3. 루프를 사용하여 각 단어를 읽고 .insert() 메서드를 사용하여 set에 삽입합니다.
  4. 범위 기반 for 루프를 사용하여 set을 순회하며 각 단어를 출력합니다.
  5. 모든 단어를 출력한 후, 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;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직과 흐름의 모든 레슨