• [자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!

    [자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!

    📌 스택(Stack)이란 무엇일까? 스택(Stack)은 "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조입니다. 조금 더 설명하자면, 위의 사진과 같이 데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조를 가지고 있습니다. 간단한 예시로는 책상에 책을 쌓아두는 것과 포개 둔 일회용 종이컵을 하나하나 꺼내서 사용하는 것으로 예시를 들 수 있을거같네요 😋 또한 스택은 정해진 방향으로만 쌓을 수 있으며, top으로 정한 곳을 통해서만 접근할 수 있습니다. 새로 삽입되는 자료는 top이 가리키는 가장 맨 위에 쌓이게 되며, 자료를 삭제할 때도 top을 통해서 삭제가 가능합니다. 그리고 스택에서는 삽입 연산을 push, 삭제 연산을 pop이라고 하며, 이러한 스택의 구조..

  • CI/CD란 무엇일까?

    CI/CD란 무엇일까?

    오늘은 CI/CD에 대해서 작성해보겠습니다. 앞으로는 글을 작성하는데 편한 글씨체로 작성할 생각입니다 :) CI/CD란? CI/CD는 개발자라면 한 번쯤은 다들 들어봤을 만한 단어일 것이다. CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것을 말한다. CI/CD의 개념만을 두고 보자면 자동화와 직접적으로 관련이 있지는 않다. 하지만 그럼에도 자동화라는 키워드는 CI/CD라는 단어에 거의 항상 따라붙는다. 또한 CI/CD는 DevOps 엔지니어의 핵심 업무라고 불리기도 한다. CI (Continuous Integration) CI (Continuous Integration)는 "지속적인 통합"이라는 의미이다. 애..

  • [Data Structure] 선형(Linear) & 비선형(NonLinear) 자료구조

    [Data Structure] 선형(Linear) & 비선형(NonLinear) 자료구조

    자료구조의 분류는 크게 2가지로, 선형 구조(Linear)와 비선형 구조(NonLinear)가 있습니다. 선형 구조(Linear) 선형 구조란, 자료를 구성하는 원소들을 하나씩 순차적으로 나열시킨 형태입니다. 자료들간의 앞, 뒤 관계가 1:1의 관계로 배열과 리스트가 대표적이며 스택과 큐도 이에 해당됩니다. 비선형 구조(NonLinear) 비선형 구조는 앞서 알아본 선형 구조와 달리, 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태입니다. 자료들간의 앞, 뒤 관계가 1:n 또는 n:n의 관계를 나타냅니다. 트리와 그래프가 대표적이며, 계층적 구조를 나타내기에 적절합니다. 이미지 정리!

  • [Xcode] 코드 자동 정렬(Re-Indent), 단축키

    [Xcode] 코드 자동 정렬(Re-Indent), 단축키

    코드를 작성하시다 보면 코드가 너저분할 때가 있거나, 복사 붙여 넣기를 하다 보면 들여 쓰기가 잘 안되어있을 경우가 있을 겁니다. 그래서오늘은 코드를 자동으로 정렬하는 방법을 정리하겠습니다. 😤 방법은 매우 쉽습니다. 위의 사진과 같이 "Editor" -> "Structure" -> "Re-Indent"를 클릭해주시면 자동 정렬이 됩니다. (사진 오른쪽에 쓰여져있듯이 단축키는 control + i 입니다.) 하지만, 저 단축키를 한다고 전체 코드가 정렬되는 것은 아닙니다. 그러면 어떻게 해야 할까요? 🧐 자동 정렬을 원하는 부분이 있다면 원하는 부분을 드래그해준 후, 위의 순서대로 Re-Indent를 눌러주거나 control + i 단축키를 사용해야 자동 정렬이 됩니다. 그리고 어느 한 부분이 아닌, 한..

  • [오늘의 Swift 지식] if let과 guard let의 차이는?

    [오늘의 Swift 지식] if let과 guard let의 차이는?

    Optional Binding을 아시는 분들은 if let을 한 번쯤은 보셨을 겁니다. 오늘은 Optional Binding에서 사용되는 if let과 guard let을 알아보겠습니다 :) guard let과 if let은 공통적으로 옵셔널 바인딩이라는 특징을 가지고 있습니다. 우리는 변수에 값이 있을지 없을지 모르는 상황에서 Optional을 사용하지만, 그 값을 안전하게 가져오려면 Optional Binding을 사용하여 값을 Unwrap 해야 합니다. 이럴 때 안전하게 값을 추출하기 위해 사용하는게 guard let과 if let입니다. if let이란? if let은 성공시와 실패 시 2가지 경우로 나눠서, 두 분기 모두에 우리가 원하는 코드를 작성해줄 수 있는데요. 즉, 코드에서 nil 일 때..

  • [Git] .gitignore 파일은 뭘까? 그리고 언제 사용할까?

    .gitignore이라는 이름은 들었지만, 정작 사용할 필요성이 느껴지지 않아서 그냥 넘어가던 지식이었습니다. 하지만, 이번에 깃허브를 사용하다가 필요성이 느껴져서 공부하고 정리하게 되었네요 👋 .gitignore 파일이란? .gitignore 파일이란, 사용자가 원하지 않는 파일들 즉, Git 버전 관리에서 제외할 목록을 지정하는 파일인데요. git으로 프로젝트를 관리하다 보면 git에는 올려서는 안 되거나 불필요한 파일들이 있을 것입니다. 물론, 명령어로 일부 파일만 제외하면 되겠지만, 모든 커밋에 그런 행동을 하는 것은 매우 귀찮고 힘든 일이겠죠? 따라서, gitignore라는 파일을 만들어서 무시할 파일들을 넣어주는 것입니다. 그러면 .gitignore 파일을 생성해보자! 😤 .gitignore은..

  • [Swift] 문자열 나누기 split()과 components() 를 알아보자!

    [Swift] 문자열 나누기 split()과 components() 를 알아보자!

    코로나에 걸리고 여러가지 일에 겹쳐서 오랜만에 글을 쓰게 되었네요.. 다시 열심히 해야지 😤 오늘은 Swift에서 문자열을 처리하는 방법중에 문자열을 쪼개야 하는 경우에 사용되는 split와 components 메소드에 대해서 알아보겠습니다. 알고리즘에서도 자주 사용되는 메소드이니 차이점을 알아두면 좋겠죠? 😋 split split 메소드를 먼저 공식문서를 통해서 봅시다. 위와같이 split 메소드는 separator, maxSplits, omittingEmptySubsequences 의 3가지 파라미터가 있습니다. 하나씩 알아봅시다! 📍 separator Character 타입으로, 매개변수를 받아서 해당 인자를 기준으로 쪼개주는 역할을 합니다. 우리가 원하는 바로 그 역할이죠 🤓 let str = "..

  • [오늘의 Swift 지식] 정렬 sort()와 sorted()

    [오늘의 Swift 지식] 정렬 sort()와 sorted()

    오늘은 sort()와 sorted()를 정리해보도록 하겠습니다. 많이 다르지 않아 오히려 더 햇갈릴 수 있어서 정리하게 되었네요 sort() 함수 sort는 기본적으로 '원본 배열'을 가지고 오름차순으로 정렬을 해줍니다. 물론 내림차순으로도 정렬이 가능합니다. 만약, 내림차순으로 정렬을 하고 싶다면, sort(by: )를 사용해서 sort(by: >)와 같이 작성해 주시면 됩니다. sort(by: )를 사용해서 오름차순으로 정렬하는 방법도 있습니다. 바로 sort(by: ) 로 작성해주시면 됩니다. 예상하셨을 거 같은데, sort와 동일하게 sorted만 작성해주면 오름차순으로 정렬되기 때문에, sorted(by: ) print(sortedArrDown) // [45, 36, 24, 9, 2] sort ..