Algorithm💡

비내림차순으로 정렬된 배열 안에서 연속된 값들의 합이 k값인 경우, [시작 인덱스,마지막 인덱스] 이와 같은 배열 형태로 값을 반환하는 문제입니다. 제약 조건은 시작과 끝 인덱스간 거리가 가장 짧아야하고 만약 거리가 같다면 인덱스가 작은 것을 우선으로 반환합니다. 처음 문제 풀이에서는 2중 반복문을 사용해서 시작 인덱스화 끝 인덱스를 순차적으로 순회하면서 조건을 맞는 값을 찾았습니다. 하지만 이렇게 코드를 구현할 경우, 배열에서 일어날 수 있는 경우를 모두 검사하게 되며, 배여르이 요소에 따라 시간복잡도가 O(N²) 되게 됩니다. import Foundation func solution(_ sequence:[Int], _ k:Int) -> [Int] { var pastDistance = 1000000 v..
2진수 문자열이 입력으로 들어왔을때, 문제에서는 0을 제거하고 1의 길이를 다시 2진수를 변환하여 앞에 단계를 반복해서 수가 1이 될때까지 반복하고 반복한 수와 제거된 총 0의 갯수를 배열 형태로 변환하는 문제입니다. 2진수 입력 -> 0의 갯수 카운트 -> 1의 갯수 카운트 -> 1의 갯수 2진수로 변환 -> 앞에 단계들 반복 이런 프로세스를 재귀함수로 구현하였습니다. import Foundation func convert(_ s:String, _ listZero:inout [Int]){ var numOfZero = Int() var numOfOne = Int() //입력 받은 문자열이 1인 경우 함수 탈출 if(s == "1"){return} for c in s{ if(c == "0"){numOfZe..
문제접근 먼저 단어의 첫번째 문자 이후에 문자들은 소문자로 표현하기 위해 모든 문자를 소문자로 만들었습니다. 단어를 구분하기 위해서 패턴을 찾던 중 단어는 공백(" ") 이후에 단어가 시작한다는 패턴을 찾았고 공백이 아닌 문자가 나타났을때 직전의 문자가 공백이면 첫번째 문자로 인식하여 대문자로 만들어주고 result 문자열에 입력해주어 문자열을 완성해 나갔습니다. 하지만 첫번째 단어는 앞에 문자가 공백이 없는 단어로 시작하기 때문에 예외로 첫번째 문자는 무조건 대문자로 만들어주는 조건문을 추가 하였습니다. 그리고 순회하는 방식은 문자열의 인덱스를 이용해서 순회하기때문에 String.Index(utf160Offset: , in: ) 메소드를 이용해 문자에 접근하였습니다. func solution(_ s:S..
import Foundation func change(_ CurrentPlayers: [String], _ forwardPlayer: String) -> [String]{ var currentPlayers = CurrentPlayers for rank in 0...currentPlayers.count{ if(currentPlayers[rank-1] == forwardPlayer){ var temp = currentPlayers[rank-2] currentPlayers[rank-2] = forwardPlayer currentPlayers[rank-1] = temp } } return currentPlayers } func solution(_ players:[String], _ callings:[String..
성실농장주
'Algorithm💡' 카테고리의 글 목록