전체 글188 [Swift 알고리즘] 소수찾기(완전탐색) https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 : DFS DFS를 이용해서 푸는데 이거 백트레킹이 필요한 것 아닌가? 어차피 순열을 찾는 것이라 유의미하게 시간을 절약할 수 없다. 만약 입력수가 커지게 된다면 고려해볼만 하지만 최대 7자리기에, 완전탐색이 속편하다고 생각했다. 참고로 백트레킹의 경우 - 앞자리가 0인 경우 - 중복되는 숫자 visited에 이미 원소로 갖고 있을 경우 두가지를 생각해 보았다. 코드 import Fou.. 2023. 5. 11. [UIKit] 부스트코스 3일차 부스트코스 3일차 https://phrygian-harmony-add.notion.site/3-0e3872602d8f47e3bb727c303c971199 2023. 5. 10. [Swift 알고리즘] 한 번만 등장한 문자 import Foundation func solution(_ s:String) -> String { var targetDict:[String:Int] = [:] var resArr:[String] = [] for i in s.map{String($0)} { if targetDict.keys.contains(i) { targetDict[i]! += 1 continue } targetDict[i] = 1 } _ = targetDict.map{ curKey, curVal in if curVal == 1 { resArr.append(curKey) } } return resArr.sorted(by: 2023. 5. 4. [Swift 알고리즘] 프로그래머스 옹알이 (2) import Foundation func solution(_ babbling:[String]) -> Int { var pArr = ["aya", "ye", "woo", "ma"] var resCount = 0 for i in babbling { var temp = i for (ind, val) in pArr.enumerated(){ temp = temp.replacingOccurrences(of: val, with: "\(ind)") } // 확인 let flagTemp = Int(temp) ?? -1 //temp값이 원하는대로 치환되었는지 확인 if flagTemp == -1 {continue} //만약 문자열이 남아있을경우 다음 문자열로 이동 var post:String = "" //이전값을 비교하기.. 2023. 5. 2. [Swift 알고리즘] 백준 1377 버블소트 https://www.acmicpc.net/problem/1377 해결방법 : 정렬전과 정렬 후의 arrInd를 확인하여 푼다. 버블소트로 정렬하면 시간초과~ func sol1377() { let inputN = Int(readLine()!)! var targetArr = Array(repeating: 0, count: inputN) for i in 0.. 2023. 4. 18. 대기업에서 하는 리팩토링은 어떻게 진행될까? 멀쩡한 앱을 Flutter 앱으로 다시 짠 이유 " Recode Project '데마에칸(出前館)' " https://engineering.linecorp.com/ko/blog/demaecan-2nd-recode-kmm-to-flutter 멀쩡한 앱을 Flutter 앱으로 다시 짠 이유 - 일본 1위 배달 앱, 두 번째 Recode 안녕하세요, LINE+ ABC Studio에서 앱을 개발하고 있는 김종식, 남상혁입니다. 저희 팀은 현재 일본에서 운영하는 배달 서비스 '데마에칸(Demaecan, 出前館)' 프로덕트를 개발하고 있습니다. '데마에칸( engineering.linecorp.com https://engineering.linecorp.com/ko/blog/about-demaecan-recode-project 일본 1위 배달 앱, 바닥부터 다시 짠다 - Recode 프로젝트 서비스 소개 '데마에칸(出.. 2023. 4. 15. [Swift 알고리즘] 백준 2133 타일 채우기 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 문제 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. 해결 방법 그림을 그려 점화식을 통하여 해결. 이러한 문제를 풀 때 새로운 모양을 앞이나 뒤에 붙이는 것으로 푼 적이 있다. 그렇게 된다면 좀 수월하게 풀리더라. 아래의 풀이과정의 경우 이전 DP값과, 인덱스에 존재하는 고유한 모양을 활용하여 계산한다. A(2)는 다음과 같다. A(2)의 경우 다음과 같이 3개의 모양이 나온다. A.. 2023. 4. 14. [Swift 알고리즘] 백준 13398 (연속합 2) https://www.acmicpc.net/problem/13398 13398번: 연속합 2 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 또, 수열에서 수를 하나 제거할 수 있다. (제거하지 않아도 된다) 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 수를 제거하지 않았을 때의 정.. 2023. 4. 13. [Swift 알고리즘] 백준 1912 (연속합) https://www.acmicpc.net/problem/1912 문제 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지.. 2023. 4. 12. [Swift 알고리즘] 백준 1339 (단어 수학) https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계.. 2023. 4. 11. [Swift 알고리즘] 백준 2529 (부등호) https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 풀이 과정 부등호에 들어갈 수 있는 값들을 나열하고 만약 depth가 inputN과 똑같아진다면, 값을 비교한다. 브루스트포스이면서 시간복잡도는 10!이다. 즉 DFS로 중간에 값을 쳐내면서 진행해도 1부터 10까지의 배열을 검사하는 단계를 각 자리수마다 진행하기에 높은 시간복잡도가 형성된다. 코드는 다음과 같다. func sol2529() { let inputN = Int(readLine()!)! let i.. 2023. 4. 9. [Swift 알고리즘] 백준 10871 (외판원 순회2) 문제 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적인 형태의 문제를 살펴보자. 1번부터 N번까지 번호가 매겨져 있는 도시들이 있고, 도시들 사이에는 길이 있다. (길이 없을 수도 있다) 이제 한 외판원이 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 한다. 단, 한 번 갔던 도시로는 다시 갈 수 없다. (맨 마지막에 여행을 출발했던 도시로 돌아오는 것은 예외) 이런 여행 경로는 여러 가지가 있을 수 있는데, 가장 적은 비용을 들이는 여행 계획을 세우고자.. 2023. 4. 7. 이전 1 ··· 9 10 11 12 13 14 15 16 다음