티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/17686
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Head, Number, Tail 분리해주고 Head, Number에 따라 정렬 진행해주면 되는 문제였습니다.
대문자, 소문자 같은 취급이므로 비교할때 소문자 혹은 대문자로 일치시켜서 정렬하는 등 포인트들을 잘 잡으면 쉽게 풀 수 있는듯합니다.
//
// 파일명 정렬.swift
// Algorithm_swfit
//
// Created by ohhyeongseok on 2022/10/26.
//
func cmp( a: [String], b: [String]) -> Bool {
if a[0].lowercased() != b[0].lowercased() {
return a[0].lowercased() < b[0].lowercased()
} else {
return Int(a[1])! < Int(b[1])!
}
}
func solution(_ files:[String]) -> [String] {
var arr = [[String]](repeating: Array(repeating: "", count: 3), count: files.count)
for i in 0..<files.count {
var trigger = -1
var fileName = files[i].map({$0})
for j in 0..<fileName.count {
if trigger < 0 {
if fileName[j].isNumber {
arr[i][1] += String(fileName[j])
trigger += 1
} else {
arr[i][0] += String(fileName[j])
}
} else if trigger < 4 {
if !fileName[j].isNumber {
arr[i][2] += String(fileName[j])
trigger = 5
} else {
arr[i][1] += String(fileName[j])
trigger += 1
}
} else {
arr[i][2] += String(fileName[j])
}
}
}
var tmp = arr.sorted(by: cmp(a:b:))
var ans = [String]()
for component in tmp {
let str = component[0] + component[1] + component[2]
ans.append(str)
}
return ans
}
프로그래머스에서 다른 분의 코드를 봤는데
extension String{
var numeric: ClosedRange<Character> { return "0"..."9" }
var head: String{
return self.prefix { numeric.contains($0) == false }.uppercased()
}
var number: Int {
return Int( self.drop { numeric.contains($0) == false}
.prefix { numeric.contains($0) == true })!
}
}
func solution(_ files:[String]) -> [String] {
return files.enumerated().sorted { (lhs, rhs) in
let l = lhs.element
let r = rhs.element
if l.head != r.head { return l.head < r.head}
if l.number != r.number { return l.number < r.number}
return lhs.offset < rhs.offset
}.map{ $0.element }
}
실행 시간이 오래걸리긴 하지만 깔끔하네요.. 이렇게도 할 수 있구나
배워갑니다
'Algorithm' 카테고리의 다른 글
Algorithm) Programmers-게임 맵 최단거리 c++ (0) | 2022.10.27 |
---|---|
Algorithm) Programmers-모음 사전 swift (0) | 2022.10.27 |
Algorithm) Programmers-방문 길이 swift (0) | 2022.10.26 |
Algorithm) Programmers-스킬트리 swift (0) | 2022.10.25 |
Algorithm) Programmers-땅따먹기 swift (0) | 2022.10.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문자열 교집합
- swea
- programmres
- 단속카메라
- ios
- swift
- 백준 20058
- 마법사 상어와 파이어스톰
- 8898
- programmers
- 도둑질
- 코딩테스트
- Algorithm
- 입국심사
- 알고리즘
- C++
- 3000
- UIKit
- Xcode
- 코테
- 3차원 농부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
글 보관함