분류 전체보기 68

[Swift]] Swift 5.6 release Unavailable Condition

안녕하세요! Swift 5.6이 새로 release되어 관련된 내용을 포스팅 해볼까 합니다! 아래의 깃허브를 참고하여 만들었습니다. GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhancements to the Swift Programming Lang This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhan..

Skill Sets/Swift 2022.03.30

[프로그래머스] 월간 코드 챌린지 시즌1 이진 변환 반복하기 with Swift

안녕하세요. 오늘은 이진변환 반복하기 문제를 풀어보겠습니다. 이진 변환 문제는 간단한 문자열 문제입니다. 문제에서 제시한 방법으로 0을 지우면서 지워진 0의 갯수를 count하고 이진변환의 횟수를 count해주면 됩니다. import Foundation var countZero = 0 func binaryTranform(_ string:String) -> String { var count = 0 for element in string { if element == "1" { count += 1 } else { countZero += 1 } } var binary = "" while(count != 0) { if count % 2 == 1 { binary = "1" + binary } else { binar..

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 캐시 with Swift

안녕하세요! 오늘은 프로그래머스 캐시 문제를 풀어보도록 하겠습니다. 캐시 문제는 LRU 알고리즘을 이용하여 문제를 해결하라고 나와있는데요! LRU 알고리즘에 대해서 간단히 소개하자면 가장 최근에 쓰인 데이터를 캐시에 담아두는 것입니다. 기본적으로 캐시는 queue형태로 이루어져있지만 캐시 hit인 경우에는 해당 캐시만 뒤로 이동됩니다. 이제 문제를 풀어보겠습니다! 우선 사용할 캐시큐와 실행시간을 선언해줍니다! var cacheQueue:[String] = [String]() var executeTime:Int = 0 대소문자와 상관없으니 모두 대문자로 취급하고 for문으로 입력을 해줍니다. for city in cities { let city = city.uppercased()func solution(_..

[프로그래머스] 위클리 챌린지 전력망을 둘로 나누기 with Swift

안녕하세요😀 오늘은 프로그래머스 전력망을 둘로 나누기 문제를 풀어보겠습니다! 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 전력망을 둘로 나누기 문제는 완전탐색을 이용해서 풀었습니다. 최대 노드 갯수가 100개이기 때문에 bfs알고리즘으로 풀 경우 최악의 상황에서 O(n * nlogn) 의 시간이 걸리기 때문에 시간제한이 걸리진 않을듯 합니다! 이제 문제를 풀어보겠습니다! wireGraph와 isVisitedNode를 선언하고 완전탐색이므로 전력망을 둘로 나누기 위해 wire를 자르는데 모든 와이어를 한번씩 ..

[프로그래머스] 위클리 챌린지 교점에 별 만들기 with Swift

안녕하세요. 오늘은 프로그래머스 교점에 별 만들기를 풀어보도록 하겠습니다. 코딩테스트 연습 - 교점에 별 만들기 [[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, - programmers.co.kr 이 문제는 참고 사항에 문제 해결방법이 대부분 나와있습니다. Ax + By + E = 0 Cx + Dy + ..

[프로그래머스] Summer/Winter Coding(~2018) 영어 끝말잇기 with Swift

안녕하세요. 오늘은 프로그래머스 영어 끝말잇기 문제를 풀어보겠습니다. 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 영어 끝말잇기 문제는 딕셔너리의 활용으로 간단하게 문제를 해결할 수 있습니다. 빈 딕셔너리와 이전 단어를 저장할 수 ..

[프로그래머스] 월간 코드 챌린지 시즌1 삼각 달팽이 with Swift

안녕하세요. 오늘은 프로그래머스 삼각 달팽이 문제를 풀어보겠습니다. 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 삼각 달팽이 문제는 완전 생 구현으로 문제를 해결하였습니다. 따로 알고리즘을 적용하여 문제를 푸는 방법은 생각해보지 않았습니다. 우선 삼각 달팽이를 그려줄 2중 배열을 만들어줍니다. var snailArray:[[Int]] = [[Int]](repeating: [Int](repeating: 0, count: n), count: n) 여기에 데이터를 넣고 0 이 아닌 경우만 answer배열에 다시 집어 ..

[프로그래머스] 월간 코드 챌린지 시즌2 2개 이하로 다른 비트 with Swift

안녕하세요. 오늘은 프로그래머스 2개 이하로 다른 비트 문제를 풀어보겠습니다. 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 이 문제는 비트연산 문제입니다. 문제의 제약조건을 보고 문제대로 풀다간 답이 없다 생각하고 다른 방법을 생각해보았습니다. 우선 짝수일때는 + 1을 하면 되는데 홀수 일때 어떻게 해야하는지가 고민이였습니다. 알고보니 짝수 홀수 상관없이 2진수로 바꿨을때 가장 낮은 자릿수의 0을 찾아 1로 바꿔주고 그 아래 자리의 1을 0으로 바꿔주면 되는 문제였습니다. 짝수일 때는 그 아래 자리의 0이 없으므로 해당 자리만 1로 바꿔줍니다. 실제로 코드로 짤때는 answer + 1 - ( 1 / 2 ) 이므로 1 / 2가 0으로 처리되므로 홀짝을 나눠줄 필요는 없습니다...

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록 with Swift

안녕하세요. 오늘은 프로그래머스 프렌즈4블록 문제를 풀어보겠습니다. 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 이 문제는 구현 문제입니다. 제약조건에 의하여 문제에서 주어진 대로 풀어도 시간초과가 나지 않습니다. 있는 그대로 구현 해보도록 하겠습니다. 첫번째로 우선 지워질 블록을 선택합니다. 또, 지워질 블록이 없다면 탈출하는 조건도 만들어줍니다! var canExit = true for i in 0..

[프로그래머스] 위클리 챌린지 피로도 with Swift

안녕하세요. 오늘은 프로그래머스 피로도 문제를 풀어보겠습니다. 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 피로도 문제는 제약 조건에서 던전의 개수가 8개까지라고 하므로 완전 탐색을 하여도 시간이 초과되지 않습니다. 순서가 상관이 있으니 순열로 문제를 풀어 보도록 하겠습니다. 순열과 조합은 재귀를 이용해서 문제를 풀 수 있습니다. 재귀를 탈출조건은 모두 방문하였을때입니다. var isAllVisited = true for i in isVisited { if i == 0 { isAllVisited =..