Menu
Coddy logo textTech

키로 정렬하기

Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 38번째.

order(x)는 x를 정렬할 위치를 반환합니다. 먼저 가장 작은 값의 위치를 반환하고, 그다음 위치를 반환하는 식입니다. 다른 벡터를 이 벡터로 인덱싱하여 x를 기준으로 해당 벡터를 정렬할 수 있습니다:

names <- c("cy", "ada", "bo")
ages <- c(41, 36, 22)
print(order(ages))
print(names[order(ages)])

출력:

[1] 3 2 1
[1] "bo"  "ada" "cy" 

내림차순으로 정렬하려면 decreasing = TRUE를 전달하거나 숫자 키 앞에 마이너스 기호를 붙이세요:

names <- c("cy", "ada", "bo")
scores <- c(80, 95, 80)
print(names[order(scores, decreasing = TRUE)])
print(names[order(-scores)])

출력:

[1] "ada" "cy"  "bo" 
[1] "ada" "cy"  "bo" 

동점일 때 순서를 정하기 위해 order()에 두 번째 키를 지정하세요. 여기서는 점수가 높은 순서부터 정렬되고, 점수가 같으면 이름순으로 정렬됩니다:

names <- c("cy", "ada", "bo")
scores <- c(80, 95, 80)
print(names[order(-scores, names)])

출력:

[1] "ada" "bo"  "cy" 

order()는 두 번째 키가 지정되지 않으면 동률인 값의 원래 순서를 유지합니다. 동일한 위치를 사용하면 서로 연관된 여러 벡터를 함께 재정렬할 수 있습니다:

items <- c("tea", "jam", "oil")
price <- c(4, 2.5, 4)
qty <- c(1, 6, 3)
idx <- order(price)
print(items[idx])
print(qty[idx])

출력:

[1] "jam" "tea" "oil"
[1] 6 1 3
challenge icon

챌린지

쉬움

ranking(names, scores)를 완성하세요. 가장 높은 점수부터 가장 낮은 점수 순으로 플레이어당 한 줄씩 1. ada 95와 같이 반환하세요. 점수가 같은 플레이어는 알파벳순으로 나열합니다.

제공된 코드는 쉼표로 구분된 name:score 쌍으로 플레이어를 읽고, 반환된 각 줄을 출력합니다.

직접 해보기

ranking <- function(names, scores) {
  # 여기에 코드를 작성하세요
  character(0)
}

# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
pairs <- strsplit(strsplit(input[1], ",")[[1]], ":")
names <- sapply(pairs, function(p) p[1])
values <- as.numeric(sapply(pairs, function(p) p[2]))
cat(ranking(names, values), sep = "\n")
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 R 컴파일러