티스토리 뷰

Algorithm/Baekjoon

[Swift] 백준 10825: 국영수

내일은개발천재🎵 2022. 5. 12. 22:55

 

  문제  

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net


  정렬 알고리즘  

1. 국어 점수를 내림차순으로 정렬한다.
2. 국어 점수가 같다면, 영어 점수를 오름차순으로 정렬한다.
3. 영어 점수가 같다면, 수학 점수를 내림차순으로 정렬한다.
4. 수학 점수가 같다면, 이름을 오름차순으로 정렬한다.

  나의 코드  

struct Score { // 이름 및 점수 저장
    var name: String
    var korean: Int
    var english: Int
    var math: Int
}

let n = Int(readLine()!)!
var students = [Score]()

for _ in 0 ..< n {

	let info = readLine()!.split(separator: " ")
    students.append(Score(name: String(info[0]), korean: Int(info[1])!, 
    english: Int(info[2])!, math: Int(info[3])!)) // n개의 정보 저장
}

students = students.sorted(){ $0.korean == $1.korean ? // 국어 점수가 같다면
	($0.english == $1.english ? // 영어 점수가 같다면
		($0.math == $1.math ? // 수학 점수가 같다면
        $0.name < $1.name: // 이름을 오름차순으로
        $0.math > $1.math) // 영어 점수가 같고, 수학 점수가 다르다면 수학 점수를 오름차순으로
			: $0.english < $1.english) // 국어 점수가 같고, 영어점수가 다르다면 내림차순으로
	: $0.korean > $1.korean} // 국어 점수가 같지 않다면 내림차순으로 정렬한다.

for i in students {
    print(i.name) // 이름만 출력
}

 


  Key point!  

📍삼항연산자의 사용


 

 

GitHub - JIWON1923/Algorithm: Studying algorithm with Swift

Studying algorithm with Swift. Contribute to JIWON1923/Algorithm development by creating an account on GitHub.

github.com

 

'Algorithm > Baekjoon' 카테고리의 다른 글

[Swift] 15970: 화살표 그리기  (0) 2022.05.15
[Swift] 백준 20291: 파일정리  (0) 2022.05.15
[Swift] 백준 15649: N과 M(1)  (0) 2022.05.08
[Swift] 백준 7576: 토마토  (0) 2022.04.23
[Swift] 백준 9461: 파도반 수열  (0) 2022.04.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함