👨🏻‍💻iOS 공부/Swift_알고리즘 풀이

    [프로그래머스] 키패드 누르기

    programmers.co.kr/learn/courses/30/lessons/67256?language=swift 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 키패드를 왼손/오른손으로 누를지 경우에 따라 분류해주면 되는 문제. 키패드를 좌표로 보고 현재 왼손, 오른손 위치와 누르고자 하는 버튼의 좌표 거리를 비교하여 누를 수 있도록 했다. 그리 어려운 문제는 아니기에 바로 코드로 가보자! impo..

    [프로그래머스] 배달 & 합승 택시 요금 (with 플로이드 와샬)

    https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7..

    [프로그래머스] 신규 아이디 추천 (feat. Swift 정규표현식)

    2021 KAKAO BLIND RECRUITMENT 1번 문제인 신규 아이디 추천. python으로는 정규표현식을 작성하는게 조금 익숙하다고 느꼈는데, Swift로 하려니 또 색다른 느낌. Swift로도 정규표현식을 제대로 공부해야할 필요가 있다고 생각된다. 다른 코테에서도 항상 문자열을 다루는 문제는 꼭 나오는 것 같다! 문제를 읽어봤을 때, 그냥 차례차례 구현하면 되겠다라는 생각이 들었다. 다만 생각과 내 손은 항상 같지 않다는 거... 아무튼 문제에 나와있는 것 처럼 스텝을 나누어 진행했다. import Foundation func solution(_ new_id:String) -> String { // 소문자 치환은 먼저 진행 var id = new_id.lowercased() // 각 단계별 수..

    [LeetCode] String (2)

    String 타입 문제의 두 번째 시간. 1. Valid Anagram Anagram이라는 말을 처음 들어봤을 것이다. 아래의 예를 봐보자. "하녕안요세" 이 단어를 보면 생각나는 말이 있는가?? 배치를 좀 다르게 하면 "안녕하세요"가 된다. Anagram은 해리포터에서도 등장했었는데, TOM MARVOLO RIDDLE를 풀면 "I AM LORD VOLDEMORT" 로 바뀌는 장면이 있었다. 즉, A로 B를 만들 수 있는지를 체크하면 되는 문제이다. 이를 위해서는 원소의 갯수가 동일한지 파악해보면 된다. 바로 코드로 가자. class Solution { func isAnagram(_ s: String, _ t: String) -> Bool { // key & value로 묶기 위해 dictionary 사..

    [LeetCode] Strings (1)

    String 데이터 타입에 대한 문제들을 풀이해볼 것 이다. 1. Reverse String 말 그대로 문자열을 뒤집는 것이 문제이다. "ABCD"일 때, "DCBA"가 되도록 하는 것이다. 바로 코드로 봐보자. class Solution { func reverseString(_ s: inout [Character]) { // 그냥 s.reverse() 사용하면 풀리긴 함..! // 좌/우 인덱스를 정해준다. var left = 0 var right = s.count - 1 // 만나는 순간 끝낼 수 있도록 while left < right { // left 값 저장해두고 var temp = s[left] // left 값을 right 값으로 변경하고 s[left] = s[right] // 저장해둔 le..

    [LeetCode] Array (4)

    Array 파트 마지막 풀이! ------------------ 1. Best Time to Buy and Sell Stock II 주식을 사고 파는데 있어 저점에 사서 고점에 팔아 최대 이익을 남기기 위한 문제! 다음 원소의 가격보다 싸면 사서 팔아주면 된다! 바로 코드로 봐보자. class Solution { func maxProfit(_ prices: [Int]) -> Int { // 결과값 저장을 위한 변수 생성 var total = 0 var cnt = prices.count // 배열을 돌면서 저점 매수 고점 매도 진행 for i in 1.. [Int] { // nums1을 기준으로 Key와 Value 세팅 var standNums = Dictionary(nums1.map {($0, 1)}, ..