알고리즘 문제 풀이 73

[Swift] 프로그래머스 LV1 실패율(시간 초과 해결)

프로그래머스 LV1 실패율(시간 초과 해결) ✅ 우선 5번이랑 9번이 시간 문제로 통과가 안되었다. 그래서 나는 코드를 개선해야함을 느꼈는데 방법은 크게 두 가지가 있다. ✅ 1. dictionary -> tuple로 변경 ✅ 2. filter -> for문으로 변경 이 두개를 통해 해결했다. 결론 : 코딩 테스트에서는 튜플 적극 활용하고 filter보다는 for문을 더 사용해보자. 아.. 시간 초과로 통과가 안된다. func solution(_ N:Int, _ stages:[Int]) -> [Int] { var dict = [Int: Double]() // [스테이지: 실패율] var player = stages.count for i in 1...N { let current = stages.filter..

[프로그래머스] 입국심사 43238 swift

✅ 여전히 배워야 할 것이 많다. 총 시간을 기준으로 로직을 작성하는 방법을 보면서 수학적 사고가 정말 중요하다고 새삼 또 느꼈다. // // main.swift // algorithm // // Created by Hamlit Jason on 2021/11/17. // https://programmers.co.kr/learn/courses/30/lessons/43238 import Foundation // 이 문제의 경우 총 걸리는 시간을 기준으로 풀어야 한다. func solution(_ n:Int, _ times:[Int]) -> Int64 { var left = 1 var right = 0 var mid = 0 var sum = 0 left = 1 right = times.max()! * n va..

[프로그래머스] 힙(Heap) 42627 Swift

✅ 드! 디! 어! Level 3 문제를 해결했다 ~_~ 물론,,, 그래프나 트리 등 다른 부분에서 부족한 점이 많지만, 우선 해결한 것에 정말 큰 기쁨을! 자료구조 힙은 하나의 트리라고 하는데, 막상 구현을 하나의 트리로 한 것 같지가 않고, 내 생각에도 시간복잡도의 개선점을 훨씬 더 가져갈 수 있는 부분인데, 그렇지 못한 것 같아서 매우 아쉬움! 🔶 문제를 풀면서 조금 어려웠던 부분 (코드에 다 있으니까 천천히 읽어보기) 1. 2차원 배열에서의 정렬 방법 2. 문제를 파악하는 능력 특히 2번의 경우에는 생각보다 치명적이였는데, 스케줄러가 쉬는 시간도 포함하여 계산을 하였더니, 당연히 히든 케이스에서 틀림!! (학교 수업시간에는 이것도 계산하는 걸로 공부한 것 같은데 음...) 아무튼!! 문제는 그렇지..

[프로그래머스] 다리를 지나는 트럭 42583 swift

✅ 이번 시간에는 이 문제를 알아보자..! 난이도는 개인적으로 쉬움! 이번시간에 확실하게 느낀건데, 어떤 문제를 읽고 파악하기까지가 늦는다... 그래서 문제와 다르게 다른 알고리즘을 짜다가 아..! 이렇게 문제가 이게 아니구나! 를 매번 늦게 파악해 ㅠㅠ // // main.swift // algorithm // // Created by Hamlit Jason on 2021/11/16. // https://programmers.co.kr/learn/courses/30/lessons/42583 import Foundation func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int { var time = 1 var midd..

[프로그래머스] 42586 기능개발 Swift

✅ 이 문제는 쉽다. 하지만 테케 2,4번이 틀려서 조금 헤매었는데, 그 이유는 var a : Int = 4 var b : Int = 3 이라고 가정하자. Double(a/b) // 1.0 이렇게 작성했기에 문제가 발생했던 것이다. 그래서 수정 Double(a) / Double(b)로 수정하였다 // // File.swift // algorithm // // Created by Hamlit Jason on 2021/11/15. //https://programmers.co.kr/learn/courses/30/lessons/42586 import Foundation func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] { var task : Int = 0 ..

[프로그래머스] 행렬의 곱셈 12949 Swift

✅ 행렬의 곱셈을 알아보자. 정말 기초다. 예전에 대학에서 공부할 떄, 이거 진짜 난제였는데, 이제는 훅훅 푸는 나를 보니 실력이 늘은 것 같아서 좋다. // // main.swift // algorithm // // Created by Hamlit Jason on 2021/11/15. // https://programmers.co.kr/learn/courses/30/lessons/12949 import Foundation func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { // print(arr1.count) // print(arr2.count) var answer : [[Int]] = Array(repeating: Array(repeating: 1..

[프로그래머스] 60057 문자열 압축 Swift

✅ 이번 시간에는 프로그래머스 문제 알아보자. https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 🟠 풀이는 이것이 코딩테스트다 - 파이썬 이 책 참고함. 내가 이 문제가 엄청 어려웠던 이유가 있는데, 내가 문제를 꼼꼼하게 읽지 않는다는 점. 예를 들면, 나는 "abbcbbc" 라는 문자열이 존재할 경우 "a2bbc"로 압축되어서 길이가 5가 나오는 것이 최적의 압축 방법이자 정답이라고 생각했으나, 문제에..

[프로그래머스] Swift 위장 - 42578

✅ 이번시간에는 위장 문제에 대해서 알아볼까해. 처음에는 재귀로 풀었는데, 다른건 다 맞는데 테케 1번에서 시간초과가 나서 다른 알고리즘으로 바꿨다. 내가 과연 이걸 생각할 수 있을까 싶으면서도 가능하다고 해봐야지 ✅ 주안점 1️⃣ 이번에 compactMap, flatMap도 확실하게 공부했고, 2️⃣ 딕셔너리에서 contains 쓰는 방법도 그동안 못했는데 확실히 했고, 3️⃣ 재귀 공부하면서 순열 조합 알고리즘도 공부했어서, 따로따로 다 정리할 예정. // // main.swift // algorithm // // Created by Hamlit Jason on 2021/11/02. // /* 더 맵게 https://programmers.co.kr/learn/courses/30/lessons/4257..

[프로그래머스] Swift 숫자 문자열과 영단어 (81301)

✅ 이번 시간에는 프로그래머스에서 푼 문제 하나를 그냥 올려두려고 느낀점도 많음! ✅ 문자열에서 index참조하는게 매번 엄청나게 고민인데, 이번에 확실하게 정리해서 좋았어. 다른 사람의 코드도 꼭 확인해보자. 🔶 문자열에서 index 찾는 방법 프로세스 index찾아서 접근해야 함으로 유의하기 // // main.swift // algorithm // // Created by Hamlit Jason on 2021/10/28. // /* 카카오 블라인드 - 숫자 문자열과 영단어 https://programmers.co.kr/learn/courses/30/lessons/81301 */ import Foundation func solution(_ s:String) -> Int { var answer = ""..