전체 글 68

[프로그래머스] 탐욕법(Greedy) 조이스틱 with Swift

안녕하세요. 오늘은 프로그래머스 조이스틱 문제를 풀어보겠습니다! 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 조이스틱 문제는 분류된 카테고리와 같이 탐욕알고리즘으로 문제를 해결하실 수 있습니다! 우선 알파벳과 알파벳간의 최소 이동거리를 구해줍니다! 삼항연산자를 이용해 최적값을 구해줍니다! for i in name.utf8 { count = Int(i)-Int(a.asciiValue!) count = count > 26-count ? 26-count : count makeNameCount..

[프로그래머스] 소수 찾기 with Swift

안녕하세요. 오늘은 프로그래머스 소수 찾기 문제를 풀어보겠습니다. 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 이 문제는 재귀를 이용한 완전탐색을 통해 소수판별 알고리즘을 적용하여 문제를 해결 하실 수 있습니다! 우선 순서가 상관없으니 순열을 적용해야합니다. 순열은 재귀의 for문에 0부터 시작하면 순열입니다! (순서가 상관있다면 이전 index를 가져와서 index+1부터 탐색하시면 됩니다.) 또한 모두 안뽑아도 되고 모두 뽑아도 되므로 해당 숫자가 들어가있을때 한번 안들어가있을때 한번 재..

[Swift] Sort, Sorted 메소드 (Dictionary 정렬 포함)

안녕하세요! 오늘은 Swift에서 제공해주는 Sort와 Sorted에 대해서 알아보려고 합니다! 우선 두 메서드는 원소가 Comparable 프로토콜을 만족해야합니다! 그래야 비교가 가능해 정렬할 수 있으니까요! ㅎㅎ 1. Sort와 Sorted 차이점 sort() 메서드는 해당 객체를 sort해주는 것입니다! //sort Example var intArray = [3, 1, 2, 5, 4] intArray.sort() print(intArray) //[1, 2, 3, 4, 5] 반면, sorted() 메서드는 sort된 객체를 반환해주는 것입니다. //sorted Example var intArray = [3, 1, 2, 5, 4] let sortedIntArray = intArray.sorted() ..

Skill Sets/Swift 2022.01.07

[프로그래머스] 스택/큐 프린터 with Swift

안녕하세요. 오늘은 프로그래머스 2레벨 프린터 문제를 풀어보겠습니다! 프린터 문제는 인덱스가 바꾸기 때문에 로케이션이 포함된 구조체를 만들어서 문제를 풀었습니다! 1. waitingList를 만들어 입력된 우선순위를 넣어주겠습니다. 2. queue에서 가장 큰 우선순위가 맨 앞에 올대까지 enqueue와 dequeue를 해줍니다. 3. dequeue하면서 location을 비교하여 같을 시 while문을 탈출하고 answer를 return해줍니다. import Foundation struct list { var location:Int = 0 var priorities:Int = 0 } func solution(_ priorities:[Int], _ location:Int) -> Int { var wait..

[프로그래머스] 월간 코드 챌린지 시즌3 빛의 경로 사이클 with Swift

안녕하세요. 오늘은 프로그래머스 빛의 경로 사이클 문제를 풀어보겠습니다! 빛의 경로 사이클 문제는 각각의 포인트에 대하여 모든 방향으로 지나갔는지 안 지나갔는지 확인하면서 경로의 길이를 측정하면 되는 문제입니다! 문제를 위와 같이 간소화 할 수 있는 이유는 지나간 길은 다시 돌아와 지나가기 때문에 같은 사이클이기 때문입니다. 그러기 위해서 isVisited와 Map을 만들어줍니다! x = grid[0].count y = grid.count for i in 0.. Int { if isVisited[startY][startX][startDirection] != 0 { return 0 } isVisited[startY][startX][startDirection] = 1 let nextDirection = re..

[프로그래머스] 2019 카카오 개발자 겨울 인턴십 튜플 with Swift

안녕하세요. 오늘은 프로그래머스 2레벨 튜플 문제를 풀어보겠습니다! 이 문제는 튜플을 표현하는 집합이 주어지면 튜플을 만들어내면 되는 문제입니다! 그러기 위해서 처음에는 튜플을 표현하는 집합을 배열로 옮겨줍니다! seperatedBy와 components 메소드를 사용하면 쉽게 배열로 옮기실 수 있습니다. 그 후 집합중 집합의 사이즈가 1부터 N까지 있는데 거기에서 이전 집합을 차집합해주면 n번째 튜플인자가 나옵니다. 과정에서 for문이 지나치게 겹치기 때문에 차집합은 메소드로 구현하였습니다. 참고로 중복이 허용되기 때문에 차집합 과정에서 Set를 사용하지 못하였습니다! import Foundation func difference(_ integerArray1:[Int], _ integerArray2:[I..

[프로그래머스] 2020 카카오 인턴십 수식 최대화 with Swift

안녕하세요. 프로그래머스 2레벨 문제 수식 최대화 문제를 풀어보았습니다. 지난번에는 조합문제를 풀어보았던 기억이 있는데 이번엔 순열문제입니다! 조합과 순열은 순서가 상관있냐 없냐 차이이기 때문데 재귀에서 0부터 시작하냐 index부터 시작하냐만 다를 뿐 똑같습니다. 차후에 알고리즘으로 다루도록하겠습니다!(sort, dfs/bfs, 순열과 조합이 밀려있네요 허헣...) 1. 숫자와 연산자를 나눈다! 각각 배열에 담습니다! for character in expression { if let integer = Int(String(character)) { number = number * 10 + Int64(integer) } else { numbers.append(number) number = 0 operator..

[프로그래머스] 2021 카카오 채용연계형 인턴십 거리두기 확인하기 with Swift

안녕하세요! 오늘은 프로그래머스 2레벨 거리두기 확인하기 문제를 풀어보겠습니다! 이번 문제는 맨허튼 거리를 이용해서 거리를 확인하는 문제입니다! 소스 코드량(함수로 안만들어서 뻥튀기된 부분이 있어요 ㅠㅠ)에 비해서 생각보다 문제가 쉬우니 다들 풀어보시기 바랍니다! 우선 이 문제는 사람이 앉은 포인트를 잡아서 맨허튼 거리 2안에서 사람이 또 있는지 없는지를 확인하는 문제입니다! 장애물도 있기 때문에 일반적인 거리측정방법말고 DFS나 BFS를 이용해야합니다. 저번에 DFS로 문제를 풀었던게 있어서 BFS로 문제를 풀어보겠습니다! 우선 BFS에 쓸 Queue가 필요한데 Swift에는 기본적으로 지원해주는 Queue가 없으니 대충 만들어 씁시다! Queue도 거리가 2까지이다 보니 Queue도 완벽하게 구현할 ..

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 with Swift

안녕하세요. 오늘은 프로그래머스 2레벨 문제 뉴스클러스터링 문제를 풀어볼게요! 뉴스 클러스터링은 Set을 사용하여 교집합과 합집합을 사용할 줄 알면 되는 문제입니다! 우선 문제에서 대소문자에 대해서 같다고 하였으니 uppercased혹은 lowercased 프로퍼티를 사용하여줍니다! 그리고 str1과 str2의 Set을 만들어주면 되는데요! 중복된 string을 허용한다고 했으나 Swift의 Set에서는 중복이 허용되지 않습니다! var i:Int = 0 while true { result = String(c1) + String(c2) + String(i) i += 1 if !stringSet.contains(result) { stringSet.insert(result) break } } 이를 방지하기 ..