분류 전체보기 (30) 썸네일형 리스트형 Swift - lazy 키워드 요즘은 프로젝트를 리팩토링 하면서, 아쉬웠던 부분을 수정해보고 있습니다.코드 기반 UI를 구성 할 때, 습관적으로 view 요소를 lazy var 로 선언하고 있더라구요.. 그래서 오늘은 lazy 키워드에 대해 알아보려고 합니다. Lazy 키워드?애플 공식문서에서는 “lazy 저장 변수는 이것이 처음 사용되기 전까지 초기값이 계산되지 않는 프로퍼티 입니다. 사용자는 선언부에 lazy 수정자를 붙임으로써 lazy 저장 변수를 나타낼 수 있습니다” 라고 소개하고 있습니다. lazy 변수는 처음 호출 될 때 초기화가 되며, 메모리에 올라간다고 합니다. 할당이 최초 호출 될 때로 늦출 수 있어 지원 저장 프로퍼티라고 불리는거 같습니다. 자세히 살펴보기 위해 예제를 통해 동작을 한번 확인하시죠.import Fou.. iOS - Xcode *.xcuserstate , .gitignore 반영되지 않는 경우 git과 연동하여 Xcode 프로젝트를 관리하다보면, 프로젝트를 열거나 git 명령어 수행만 했음에도 UserInterfaceState.xcuserstate 파일이 git에서 변경사항으로 추적되는 경우가 있다. 원인과 해결방안에 대해서 알아보자! UserInterfaceState.xcuserstate?작업 공간/프로젝트 문서 레이아웃과 같은 항목을 저장하는 파일이라고 한다. 아마 프로젝트를 최근 오픈한 날짜도 정보를 가지고 있으니, 파일이 업데이트 되고 git 변경사항으로 추적되는 것 같다.추적 제외 대상을 지정해주는 .gitignore 파일을 업데이트하여 해결할 수 있었다. .gitignore 표현 형식과 역할에 대해서는 기회가 된다면 포스팅하도록 하겠습니다…*.xcuserstate 그러나?!?! 실제.. iOS - AutoLayout, Autoresizing는 무엇인가 UIKit의 Storyboard를 사용하여 UI가 디자인 된 프로젝트를 Code Base로 컨버팅을 진행하다가, 문득 매번 사용하는 translatesAutoresizingMaskIntoConstraints = false 해줘야하는 이유에 대해 궁금해졌다!AutoLayout, Autoresizing, translatesAutoresizingMaskIntoConstraints 예제를 통해서 알아보시죠! 예제 git : https://github.com/KimCookk/iOS_Example/tree/main/UI/UIKit/AutoresizingMask AutoLayout? 뷰들 사이에 관계를 설정하여, 자동적으로 뷰의 크기와 위치가 계산되는 방식입니다. 스토리보드나 코드를 통해 버튼 하나를 생성한다고 가정.. 프로그래머스 - L1 키패드 누르기 설계위치를 나타내고 거리 계산이 되는 객체 필요왼쪽, 오른쪽 현 위치를 나타내는 변수 및 업데이트 필요키패드들의 위치를 담고 있는 변수 필요numbers 순회하여 진행 git : 키패드 누르기문제 : https://school.programmers.co.kr/learn/courses/30/lessons/67256 문제 풀이미리 정의 된 값들의 값 정의문제의 제시 된 키패드대로 keypadPositions 딕셔너리에 값 할당오른쪽 손, 왼쪽 손의 위치 초기화numbers를 순회하여, 기본적으로 오른손으로 수행 위치이면 수행, 왼쪽 수행 위치이면 수행하며, 거리 계산이 필요한 경우 거리 계산 후 규칙대로 수행결과 반환import Foundation func solution(_ numbers:[Int], _ .. 프로그래머스 - L2 예상 대진표 설계짝수인 경우 자신의 값 - 1 과 대결하고, 홀수인 경우 자신의 값 + 1과 대결다음 라운드 배정 받는 수는 자신의 값 / 2 올림위 규칙을 반복하여 대결 번호가 겹치는 경우 break 및 반환 git : 예상 대진표문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12985 문제 풀이frontOpponent 은 frontNumber의 상대 번호, backOpponent은 backNumber의 상대 번호if(frontOpponent == backNumber) 인 경우 a, b가 대결하게 되는 경우 이므로, break그렇지 않은 경우는 다음 라운드시 배정받는 번호를 부여 및 라운드 수를 올린다. import Foundation // 홀수는 .. 프로그래머스 - L1 옹알이 (2) 설계옹알이 문자열에서 문자를 하나씩 순회하여 빈 문자열에 삽입삽입 될 때마다 가능한 옹알이 인지 확인가능하게 되면 문자열을 비어주고, 인덱스 체크최종적으로 문자열이 비어있으면 가능 옹알이 git : 옹알이 (2)문제 : https://school.programmers.co.kr/learn/courses/30/lessons/133499문제 풀이possibleBabble 가능한 옹알이를 상수 배열 선언babble.reduce( …. ) 문자를 하나씩 순회하면서 문자를 더 해나간다. 가능한 옹알이 단어 일 경우 문자열을 빈 문자열로 초기화, 인덱스 저장해놓기결과적으로 문자열이 비어있으면 가능한 옹알이let possibleBabble = ["aya", "ye", "woo", "ma"] func solution(.. 프로그래머스 - L2 짝지어 제거하기 설계문자열을 순회해서 stack에 넣기 전에 맨 윗부분을 검사해서 같은 경우 pop, 다른 경우 push순회가 끝났을 때 stack이 빈 경우면 조건에 만족 git : 짝지어 제거하기문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12973문제 풀이if let peek = stack.last 에서 nil 인 경우 stack이 빈 경우이므로 stack.append(alphabet) 추가하기nil이 아닌 경우 peek 값과 순회하는 알파벳을 확인하여 같은 경우면 연속적이기 때문에 pop 아닌 경우 추가해주기func solution(_ s:String) -> Int{ var answer:Int = 0 var stack: [String] = [] .. 알고리즘 - Big-O 시간복잡도에 관해 포스팅 한다 한다 말씀만 드리고 이제야 글을 쓰게 됩니다! 꾸벅..오늘은 시간복잡도 , Big-O 에 관해 살펴보겠습니다. git : 예제소스Big-O ?Big-O 표기법은 알고리즘 성능을 수학적으로 표현한 표기법입니다.알고리즘 성능은 얼마나 많이 쓰냐 ( 공간 ), 얼마나 걸리냐 ( 시간 )에 따라 결정됩니다. 그래서 Big - O 표기법으로 시간 복잡도 / 공간 복잡도를 표기합니다.시간 복잡도는 입력값과 연산 수행 시간의 상관관계를 나타냅니다.그럼 아래에서 한번은 봤을법한 시간 복잡도의 표기법을 보겠습니다. O(1)Big-O 표기법은 O( ) 안에 표기를 해줍니다!해당 표기법은 앞으로 보나 뒤로 보나 옆으로 보나 1 입니다….맞습니다 위에서 말씀드렸지만, 시간복잡도는 입력값에 따른 .. 이전 1 2 3 4 다음