본문 바로가기

알고리즘48

[Swift 알고리즘] 프로그래머스 - 기능개발 안녕하세요 코코종입니다. 이전에 풀었던 문제지만 다시 풀었습니다. 확실히 이전에는 구현에 어려움을 조큼... 겪었는데 조금 연습했다고 익숙해졌나보네요 쿠쿠쿠... import Foundation func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] { var answer: [Int] = [] var progresses: [Int] = progresses // queue처럼 사용 var speeds: [Int] = speeds // queue 처럼 사용 while !progresses.isEmpty { for i in 0..= 100 { progresses.removeFirst() speeds.removeFirst() result += 1 } if res.. 2023. 5. 7.
[Swift 알고리즘] 프로그래머스 - 다리를 지나는 트럭 안녕하세요 코코종입니다. 이전에 파이썬으로 풀었던 문제인데 다시 풀어봤습니다. 파이썬 처럼 queue나 deque가 없는게 조큼 아쉽지만 악깡버 하겠습니다... import Foundation func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int { // bridge_length -> 다리의 길이(동시에 올라갈수 있는 트럭수) // weight -> 최대 무게 var answer = 0 var queue: [Int] = truck_weights var bridge: [Int] = Array(repeating: 0, count: bridge_length) var passed: [Int] = [] var sum = 0 /.. 2023. 5. 6.
[Swift 알고리즘] 프로그래머스 - 의상 안녕하세요 코코종입니다. 어렵지 않으니 바로 갑니다. import Foundation func solution(_ clothes:[[String]]) -> Int { // idea: (갯수+1)씩을 곱하고 -1해주기(아무것도 안입은 경우) var answer = 1 var dict: [String : Int] = [:] // 카테고리명 : 갯수 for cloth in clothes { let category = cloth[1] var cnt: Int = dict[category] ?? 0 dict[category] = cnt + 1 } dict.forEach { k, v in answer *= (v+1) } answer -= 1 // 아무것도 안입는 경우 return answer } 어떻게 계산하느냐의 .. 2023. 5. 5.
[Swift 알고리즘] 프로그래머스 - 예상 대진표 안녕하세요 코코종입니다. 어제 다 못푼것 까지 해서 이어서 갑니닷.. import Foundation func solution(_ n:Int, _ a:Int, _ b:Int) -> Int { // 2^m = n // a가 각각 라운드에 몇번째 블록에 있는지 체크하기 // n = 8일때 // [1 2 3 4 5 6 7 8] // a = 4, b = 7 일때 // a-1 / 2 -> 1 // b-1 / 2 -> 3 // 두개가다르므로 // 다시 2*2로 나눈다 // a-1 / 4 = 0 // b-1 / 4 = 1 // 두개 다르므로 다시 2^3으로 나눔 // a-1 / 8 = 0 // b-1 / 8 = 0 같음! -> 만남 // 위와 원리는 비슷하나 세부 구현이 틀림! var answer = 0 var a .. 2023. 5. 4.
[Swift 알고리즘] 프로그래머스 - 영어 끝말잇기 안녕하세요 코코종입니다. 어제는 바빠서... 풀다가 완료를 못한걸 마무리 했답니다. import Foundation func solution(_ n:Int, _ words:[String]) -> [Int] { var answer: [Int] = [0, 0] // 탈락자 번호, 차례 var dict: [String: Bool] = [:] let w = words.count // words의 갯수 var last = words.first!.suffix(1) dict[words.first!] = true for i in 1.. 2023. 5. 4.
[Swift 알고리즘] 프로그래머스 - 배달 안녕하세요 코코종입니다. 이문제는 처음에 dp로 구현했지만 40.6점만 받을수 있었습니다 ㅜㅜ 뭔가 맞는거 같은뎁... 모르겠어서 다른분들의 풀이를 참고했습니다... import Foundation func solution(_ N:Int, _ road:[[Int]], _ k:Int) -> Int { var answer = 0 // 1번에서 시작함! // road 내에서 [Int]: [a,b,c] -> a에서 b까지 가느데 c가 걸린다. // dp로 해서 1번 마을에서 이어진 애들부터 해서 가면서 최단 시간을 구하자! // 최단 거리를 나타낸 dp var dp: [Int] = Array(repeating: 50*10000, count: N+1) // index 0 미사용 // lines i와 연결된 마을들.. 2023. 5. 2.