์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- SnapKit
- Swfit
- ํจ์คํธ์บ ํผ์ค
- BOJ
- Xcode
- ํ๋ก๊ทธ๋๋จธ์ค
- tableView
- designpattern
- arkit
- MVVM
- combine
- realm
- UIKit
- XCTest
- SwiftUI
- swift
- Flutter
- node.js
- rxcocoa
- RxSwift
- CollectionView
- Lv2
- Kuring
- raywenderlich
- visionOS
- TCA
- ๋ฐฑ์ค
- BFS
- reactorkit
- ios
Archives
- Today
- Total
lgvv98
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ํฐ ์ ๋ง๋ค๊ธฐ ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋จธ์ค LV2. ํฐ ์ ๋ง๋ค๊ธฐ
โ ์ด ๋ฌธ์ ๋ ์ ๋ง ์ค๋๊ธฐ๊ฐ ๋์ ์ ํ์ฌ ํ์ด๋๋ค.
(์ฒซ ๋์ ) 2021/08/08
(๋๋ฒ์งธ ๋์ ) 2021/11/18
(์ธ๋ฒ์งธ ๋์ ) 2022/04/13
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๋ค๊ฐ ๊ท์ฐฎ์์ ๊ณ์ ๋ฏธ๋ค๊ณ , ์๊พธ ๋ฏธ๋ฃจ๋ค๊ฐ ๊ฒฐ๊ตญ ํด์ผํ ๊ฒ ๊ฐ์์ ํ์ด๋!
์ด๊ฑฐ ๋จธ๋ฆฟ์์ผ๋ก๋ ์ดํด๊ฐ ๋๋๋ฐ, ๊ตฌํํ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ค์ ๋ค.
โ ์ฒซ ๋์
์ฒซ ๋์ ์์์ ์ฝ๋
์๋ ์ฌ์ง์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง ์๊ฐ ์ด๊ณผ๋ก fail
//
// main.swift
// algorithm
//
// Created by Hamlit Jason on 2021/08/08.
//
/* ํฐ ์ ๋ง๋ค๊ธฐ
https://programmers.co.kr/learn/courses/30/lessons/42883
์คํจ
*/
import Foundation
func solution(_ number:String, _ k:Int) -> String {
var arr = Array(number)
//print(arr)
//var startIndex = 0
var k = k
//print("start k is \(k)")
var collect = [Character]()
collect.append(arr[0])
arr.removeFirst()
for i in 0..<number.count {
var prev = collect[collect.endIndex - 1].wholeNumberValue!
let next = arr[0].wholeNumberValue! // Intํ์
//print("\(i) -> prev: \(prev) next : \(next)")
while true {
//print("\(i) -> collect \(collect)")
//print("\(i) -> arr \(arr)")
if prev < next {
collect.removeLast() // ๋ง์ง๋ง๊บผ ๋นผ๊ณ
k -= 1 // k ๊ฐ ๊ฐ์ ์นด์ดํ
//print("k in -> \(k) ")
if k <= 0 {
// print("out")
collect += arr
let answer = collect.reduce(""){"\($0)\($1)"}
return answer
}
if collect.count == 0 { // ๋บ๋๋ฐ ์ปฌ๋ ํฐ ๊ฐ์ด 0์ด๋ฉด
collect.append(arr[0])
arr.removeFirst()
break
} else {
prev = collect[collect.endIndex-1].wholeNumberValue!
}
} else {
//print(arr)
if arr.isEmpty {
//collect += arr
let answer = collect.reduce(""){"\($0)\($1)"}
return answer
}
collect.append(arr[0])
arr.removeFirst()
break
}
}
// print("collet : \(i) -> \(collect)")
// print("arr : \(i) -> \(arr)")
}
return ""
}
print(solution("4177252841", 4))
โ 2์ฐจ ๋์ !!
//
// main.swift
// algorithm
//
// Created by Hamlit Jason on 2021/11/18.
//https://programmers.co.kr/learn/courses/30/lessons/42883
import Foundation
func solution(_ number:String, _ k:Int) -> String {
// ๊ฑ ๋๋ณด๋ค ์์ ์๋ ์์ค์ ์์๊ฑฐ ๋ค ์์ ๋ฉด ๋๊ฒ ๋ค
var queue = [Character]() // Int type
var arr = number.map{$0} // String type
var count = k
// print(type(of: arr))
// print(arr[0])
if k == 0 {
return number
} else if arr.count - 1 == k {
return "\(arr.max()!)"
}
while true {
print("while head \(count)")
if arr.count == 1 {
print("arr count 1")
break
}
if arr[0] < arr[1] { // ๋ด ๋ค์ ์ซ์๊ฐ ๋ ํฌ๋ฉด
print("\(arr[0]) \(arr[1])")
arr.removeFirst()
count -= 1
if count == 0 {
break
}
if !queue.isEmpty { // ํ๊ฐ ๋น์ด์์ง ์๋ค๋ฉด
// ํ์ ๋ง์ง๋ง์ผ๋ก ๋ค์ด๊ฐ ์ซ์์ ํ์ฌ ์ซ์ ๋น๊ต
while true {
if queue.isEmpty {
break
}
print("queue \(queue)")
if arr[0] < queue.last! { // ํ์ ๋ง์ง๋ง ๊ฐ์ด ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด?
break
} else {
queue.removeLast()
count -= 1
}
if count == 0 {
break
}
}
}
} else {
print("\(arr[0]) \(arr[1])")
queue.append(arr[0])
arr.removeFirst()
}
if count == 0 {
break
}
}
print("count\(count)")
print("\(queue) \(arr)")
var str1 = queue.reduce("") { s, ss in
return "\(s)\(ss)"
}
var str2 = arr.reduce("") { s, ss in
return "\(s)\(ss)"
}
var str3 = "\(str1)\(str2)"
for _ in 0..<count {
// print("count is \(count)")
if let index = str3.firstIndex(of: str3.min()!) {
// print("remove?")
str3.remove(at: index)
}
}
// print(str2)
return "\(str3)"
}
//print(solution("4177252841", 4))
//print(solution("1924", 2))
//print(solution("1231234", 4))
//print(solution("99991", 3))
//print(solution("999", 1))
var a = [Character]()
for i in 0..<1000000 {
a.append("9")
}
print(a)
//print(solution("111119", 3))
๋ ์๋๋ค ^__^
์... ์ธ๋ฒ์งธ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์์๋ณด๋๋ก ํ์.
โ ์ธ๋ฒ์งธ ๋์
์ฑ๊ณต !_!
๋ค๋ฅธ ๋ถ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๊ธด ํ์ผ๋ ์ฃผ์์ผ๋ก ์ ๋ฆฌํ๋ฉด์ ์ดํดํ๋ค ใ ใ
๋ช๋ช ์ฝ๋์ ํน์ด์ ์ด ์์๋๋ฐ, ๊ผญ ํ์ธํด๋ณด๋๋ก ํ์.
//
// 42883.swift
// Algorithm
//
// Created by Hamlit Jason on 2022/04/13.
//
//https://programmers.co.kr/learn/courses/30/lessons/42883
import Foundation
struct p42883 {
static func run() {
// print(p42883.solution("4177252841", 4)) // 94
print(p42883.solution("119119", 5)) // 9
}
static func solution(_ number:String, _ k:Int) -> String {
let map = number.map { "\($0)" }
var stack = [String]()
var count = 0
for i in 0..<number.count {
// ์์ง ๋ ์ง์ ๊ฑฐ๊ณ , ์คํ์ ๊ฐ์ด ๋ค์ด์์ผ๋ฉด์, ์คํ์ ๋ง์ง๋ง ๊ฐ์ด ๋น๊ตํ๋ ์๋ณด๋ค ์๋ค๋ฉด
while count < k && !stack.isEmpty && stack.last! < map[i] {
stack.removeLast() // ์คํ๊ฐ ์ง์ฐ๊ณ
count += 1 // ์ง์ ๋ค๋ ์๋ฏธ์์ + 1
}
if count >= k { // k๋งํผ ์ง์ ๋ค๋ฉด
stack.append(contentsOf: map[i...]) // ์คํ์ ์ํํ์ง ๋ชปํ๊ณ ๋จ์ ๊ฐ๋ค ๋ค ๋ฃ์ด์ค
break
} else {
stack.append(map[i]) // ์คํ์์ ์ง์ธ ์๋ ์๋๋ฐ, ์ง์ธ๊ฒ ๋จ์๋ค๋ฉด ์คํ์ ๋ฃ๊ธฐ
}
}
// prefix๋ฅผ ํ๋ ์ด์ ๋ ์คํ์ ์๋ถ๋ถ๋ถํฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ถ๋ ฅ ๊ฐฏ์๋ฅผ ๋ง์ถฐ์ฃผ๊ธฐ ์ํจ์ด๋ค.
// ์๋ฅผ ๋ค๋ฉด, "119119" ์ ๊ฒฝ์ฐ์๋ 99๊ฐ ์ถ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ์ด๊ฑธ ์๋ฐฉํ๊ธฐ ์ํจ์ด๋ค.
print(stack.joined())
return String(stack.joined().prefix(number.count-k))
}
}
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2022.04.16 |
---|---|
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2022.04.16 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ฟผ๋ ์์ถ ํ ๊ฐ์ ์ธ๊ธฐ (0) | 2022.04.13 |
[Swift] BOJ 1753 ์ต๋จ๊ฒฝ๋ก (0) | 2022.04.13 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (0) | 2022.04.06 |
Comments