Menu
Coddy logo textTech

값 그룹화하기

Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨. 56개 중 16번째.

default-subscript 패턴은 일상적으로 사용되는 두 가지 형태의 기반입니다.

빈도 카운터: 각 키가 나타나는 횟수를 셉니다.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

버킷팅: 파생된 키 아래에 값을 수집합니다:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

버킷팅 경우의 default는 빈 배열입니다. default: 값은 키가 누락된 경우에만 사용되며, 그러면 오른쪽 항이 항목을 제자리에서 변경합니다.

challenge icon

챌린지

중급

입력 한 줄을 읽습니다. 입력은 쉼표로 구분된 단어 목록입니다.

다음 순서로 출력합니다.

  1. 입력에 나타나는 각 단어 길이마다 한 줄씩 출력합니다. 가장 짧은 길이부터 가장 긴 길이 순으로 정렬하며, 형식은 <length>: <count>입니다. 여기서 count는 해당 길이의 단어가 몇 개 나타났는지를 의미합니다.
  2. Most common length: <n>을 출력합니다. 여기서 n은 개수가 가장 많은 길이입니다. 개수가 같으면 더 짧은 길이를 선택합니다.

입력이 hi,hello,yo,hey,bonjour,bye인 경우 출력은 다음과 같습니다.

2: 2
3: 2
5: 1
7: 1
Most common length: 2

길이 2와 3은 모두 두 번씩 나타납니다. 더 짧은 길이를 선택하므로 2가 선택됩니다.

직접 해보기

let words = readLine()!.components(separatedBy: ",")

// TODO: 길이별 단어 수 세기; 정렬하여 출력; 가장 흔한 것 출력 (동점: 더 짧은 것)
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드