간단한 문제 요약
나이와 이름이 가입한 순서대로 주어진다. 이때 회원들을 나이가 증가하는 순으로!! 나이가 같을 시 먼저 가입한 사람이 오는 순서로(이미 지정됬습니다. 가입한 순서대로 주어지기 때문입니다) 정렬하시오.
문제 풀이
이 문제는 말 그대로 입력받은 문장을 나이, 이름으로 분리 시킨 후에 나이에 따른 정렬을 하게 되는 문제입니다. 한 큐에 출력까지 뽑아보고 싶었습니다.
print(
(0..<Int(readLine()!)!) //1
.map{_ ->(String,String) in //2
let a=readLine()! //3
.split{$0==" "} //4
.map{String($0)} //5
return (a[0], a[1]) //6
}
.sorted{Int($0.0)!<Int($1.0)!} //7
.map{"\($0.0) \($0.1)"} //8
.joined(separator: "\n") //9
)
1. 회원 인원 수 입력 받습니다.
2. map을 통해서 회원 수 만큼 반복합니다 회원수, 이름 받아서 배열로 반환할 예정입니다. (이때 반환 타입을 xCode에서 명시하지 않아도 되는데, 백준에서 명시 ( _ -> (String,String) in )안하면 추론을 못합니다.)
3. 나이와 이름을 하나의 문자열로 입력받습니다. "23 tom" //첫번째 readLine() 실행 예시
4. 문자열의 스페이스를 기준으로 하나였던 문자열을 여러 개의 문자열들로 분리합니다.
5. 스트링 타입의 배열 만듭니다. ["23","tom"] //첫번째 readLine() 실행 예시
6. 나이와 회원 명을 튜플로 만들어서 반환합니다. [("23","tom"),("54","mini"),("24","jun")]
map의 모든 연산이 끝나면 [(나이, 회원명)] 의 배열이 만들어지고
7. 나이 순으로 정렬을 합니다. [("23","tom"), ("24","jun"), ("54","mini")]
8. (나이, 회원명) 튜플을 문자열로 변환합니다. ["23 tom", "24 jun", "54 mini"]
9. 배열을 한개의 문자열로 만들어 반환합니다. "23 tom\n24 jun\n54 mini"
반환된 문자열을 print함수로 출력합니다.
'백준 PS일지 > Etc' 카테고리의 다른 글
[Swift/백준] 2309: 일곱 난쟁이 + map의 특징 | PS일지 (0) | 2023.02.07 |
---|---|
[백준/Swift] 1927 : 최소힙 (0) | 2023.01.08 |