728x90
어려운 문제는 아니었는데 이상하게 정렬이 잘 안되었던 문제...
결국 여러번 시행착오를 거쳤지만 답은 나왔다!
이 문제를 풀면서 생각한 논리적 흐름은
- 모든 경우의 수를 고려해주면 된다.
- 국어 점수가 같지 않다면 국어 성적을 기준으로 내림차순
- 국어 점수가 같고 영어 점수가 다르면 영어 성적을 기준으로 올림차순
- 국어 점수가 같고 영어 점수가 같고 수학 점수가 다르면 수학 성정을 기준으로 내림차순
- 마지막으로 다 같다면 아스키 코드 값 순서대로 정렬해주면 된다.
* 10825번
let n = Int(readLine()!)!
var data: [(String, Int, Int, Int)] = []
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{ String($0) }
let name = input[0]
let korean = Int(input[1])!
let english = Int(input[2])!
let math = Int(input[3])!
data.append((name, korean, english, math))
}
let sortedData = data.sorted {
if $0.1 != $1.1 {
return $0.1 > $1.1
} else if $0.2 != $1.2 {
return $0.2 < $1.2
} else if $0.3 != $1.3 {
return $0.3 > $1.3
} else {
return $0.0 < $1.0
}
}
for i in sortedData {
print(i.0)
}
정리(Today I Learned)
- 삼항연산자를 이용한 한줄 정리도 가능하긴한데 코드가 보기에 너무 복잡해보여 if문으로 정리하였다.
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 2750번 Swift 알고리즘 연습 - 수 정렬하기_정렬 (0) | 2023.03.06 |
---|---|
프로그래머스 Lv. 3 Swift 알고리즘 - 네트워크_DFS (0) | 2023.02.28 |
백준 1941번 Swift 알고리즘 연습 - 소문난 칠공주_DFS (0) | 2023.02.24 |
백준 10026번 Swift 알고리즘 연습 - 적록색약_BFS (0) | 2023.02.22 |
백준 14716번 Swift 알고리즘 연습 - 현수막_BFS (1) | 2023.02.22 |