알고리즘/백준
[백준 swift] 문자열 - 1157번, 1152번, 5622번, 1316번
Diana_iOS
2021. 4. 4. 23:07
1157번 - 단어 공부
import Foundation
let alpha = readLine()!.uppercased()//apple
alpha.forEach {
print(String($0)) //A,P,P,L,E
}
해당 문제를 풀기 전 String에 forEach를 취할 시 위와 같은 결과가 나온다는 것을 알고 시작하자.
import Foundation
let alpha = readLine()!.uppercased()
var array = [String:Int]()
alpha.forEach {
if array[String($0)] == nil{
array[String($0)] = 1
}else{
array[String($0)]! += 1
}
}
var result = [String]()
for key in array.keys {
if array[key] == array.values.max(){
result.append(key)
}
}
print(result.count == 1 ? result[0] : "?")
1152번 - 단어의 개수
import Foundation
let alpha = readLine()!.components(separatedBy: " ")
var array = alpha.filter{($0).count > 0}
print(array.count)
5622번 - 다이얼
import Foundation
let written = readLine()!
let alpha = Array(written)
var array = alpha.reduce(0, {$0 + changeToNum(alpha: String($1))})
print(array)
func changeToNum (alpha: String) -> Int{
switch alpha {
case "A","B","C":
return 3
case "D","E","F":
return 4
case "G","H","I":
return 5
case "J","K","L":
return 6
case "M","N","O":
return 7
case "P","Q","R","S":
return 8
case "T","U","W":
return 9
default:
return 10
}
}
더 짧게 변경한 버전
import Foundation
let alpha = readLine() ?? ""
var result = 0
for char in alpha{
switch char {
case "A","B","C":
result += 3
case "D","E","F":
result += 4
case "G","H","I":
result += 5
case "J","K","L":
result += 6
case "M","N","O":
result += 7
case "P","Q","R","S":
result += 8
case "T","U","V":
result += 9
default:
result += 10
}
}
print(result)
1316번 - 그룹단어 체커
import Foundation
let num = Int(readLine()!)!
var dic = [String: Int]()
var add = 0
for _ in 1...num{
var count = 1
var recount = 1
var char = Array(readLine()!)
var clone = char
clone.sort()
clone.append("?")
char.append("?")
for i in 0...clone.count-2{
if(clone[i] == clone [i+1]){
count += 1
}else{
dic.updateValue(count, forKey: "\(clone[i])")
count = 1
}
}
for j in 0...char.count-2{
if(char[j] == char[j+1]){
recount += 1
}else{
if(dic[String(char[j])] == recount){
if(j == char.count-2){
add += 1
}
}else{
break
}
recount = 1
}
}
}
print(add)
너무 난잡하게 짠듯 해서 나중에 수정 예정입니다..