본문 바로가기

분류 전체보기151

[Swift] Nil 결합 연산자(Nil-Coalescing Operator) 저번 포스팅에서 Swift의 기본 연산자에 대해 알아 보았다. 기본 연산자는 프로그래밍 언어의 공통적인 부분이라면, 이번 내용은 '옵셔널(optional)'이라는 자료형이 있는 Swift만의 독특한 연산자라 할 수 있다. [Swift] 기본 연산자(Basic Operators) 📌 용어(Terminology) 1. 단항 연산자(Unary Operator) 단일한 항목(single targets)에 작동하는 연산자. 접두사(prefix)와 접미사(postfix)로 나누어짐. var a, b, c -a b c! 2. 이항 연산자(Binary Operator) 2개의 항목(two ta andy-archive.tistory.com 📌 Nil 결합 연산자의 기본 형식 Nil 결합 연산자의 기본 형식은 a ?? b.. 2023. 4. 11.
[백준] (Swift) 14425번: 문자열 집합 📌 문제 14425번: 문자열 집합 📌 풀이 Set 자료형과 관련 메서드를 알면 간단하게 풀 수 있는 문제였다. 질문 처음에는 Set 자료형으로 요소를 추가하는 건 알았지만 아래의 궁금증이 생겼다. Q. 예시의 baekjoononlinejudge과 baekjoon처럼 해당 요소가 정확히 일치하지 않으면 count 하지 않을 수 있나? A. contains() 메서드가 알아서 count 하지 않는다(!) contains()의 예시 코드 var array = ["jellyfish", "cat", "dog", "bird"] var set = Set() for i in 0.. 2023. 4. 11.
[백준] (Swift) 10815번: 숫자 카드 📌 문제 10815번: 숫자 카드 📌 풀이 풀이는 두 가지가 모두 정답으로 나왔다. 이진 탐색 세트(Set) 자료형 (1) 이진 탐색 처음에는 주어진 배열을 선형으로 접근했더니 ‘시간 초과’가 나와서 이진 탐색으로 바꿔서 푸니 바로 정답이 나왔다. (2) 세트(Set) 자료형 이렇게 끝내기는 너무 아쉬워서 다른 자료형으로 풀어 보았는데, Set 자료형으로 풀면 정답이 나온다. for in을 쓸 때 Array의 시간 복잡도는 $O(n)$, Set의 시간 복잡도는 $O(1)$이다. 그 이유를 찾아 보니, Set는 해시 테이블을 이용해 만든 자료구조이기에 선형 탐색을 하지 않는다고 한다. 선형 탐색과 이진 탐색에 대한 간단한 설명은 여기를 클릭! [CS50 2019] (컴퓨팅 사고) 알고리즘 이전 강의에서는 .. 2023. 4. 11.
인터럽트(Interrupt)와 실행 과정, 역할 프로세스에 대한 상태(Process State)를 공부하는데 인터럽트에 대해 더 자세히 알고 싶어서 이번 블로그를 작성했다. 인터럽트가 무엇인지 알아보고 이에 대한 종류와 실행 과정, 역할에 대해 알아 보자. 📌 인터럽트의 정의 인터럽트(Interrupt)는 시스템의 내부 또는 외부에서 발생하는 예기치 못한 사건에 의해, 프로세서(흔히 CPU)가 실행 중인 프로그램의 작업을 중단시키고 다른 프로그램을 수행하도록 하는 명령어이다. 여기서 말하는 예기치 못한 사건은 입출력(Input/Output or I/O)이나 에러의 발생, 타이머의 시간 만료 등을 의미한다. 📌 인터럽트의 종류 인터럽트의 종류는 두 가지인데, 하드웨어 인터럽트와 소프트웨어 인터럽트가 있다. 말 그대로 '하드웨어에 의한 인터럽트냐, 소프트.. 2023. 4. 9.
운영체제) 프로세스(Process) 수정일: 2023-12-27 (수) 목차 머리말 들어가기 전에 이전 내용 - 운영체제의 구조 이전 포스팅에서 운영체제의 전체적인 구조에 대해서 알아 보았다면, 이제는 프로세스에 대해 배울 차례다. 운영체제의 정의와 폰 노이만 구조 포스팅 개요 프로세스의 정의와 배치, 상태에 대해 살펴 보고 프로세스 제어 블록이 무엇인지 알아 보자. 프로세스(Process) 1. 프로세스의 정의 A process is a program in execution. 프로세스는 실행 중인 프로그램을 의미한다. 프로세스는 디스크에 있던 프로그램이 메모리에 올라가 실행되는 것을 의미한다. 메모리 시간에 보다 더 자세히 배우겠지만, 메모리로 바로 올라가지는 않고, 가상 메모리에서 매핑하는 과정을 거쳐서 물리 메모리로 올라간다. 2. .. 2023. 4. 9.
[Swift] 문자열 리터럴(String Literals) 프로그래밍 언어의 기본 자료형 중 하나인 문자열에 대해 알아 보자. Swift는 문자열과 문자를 별도로 구분하는 언어이다. (아래의 여러 줄 문자열은 루이스 캐럴의 소설 『이상한 나라의 앨리스』(1865) 발췌하여 가져 왔습니다.) 📌 문자열 리터럴(String Literals) 문자열의 리터럴은 쌍따옴표 하나(")를 양끝에 감싸서 데이터를 표현한다. // 타입 추론 형식으로 문자열을 작성할 때 let aString = "This is a string." // 타입 명시로 문자열을 작성할 때 let anotherString: String = "I just wrote my second string." 📌 여러 줄 문자열 리터럴(Multiline String Literals) (1) 쌍따옴표 3개(""")를.. 2023. 4. 8.
[Swift] reversed로 컬렉션 타입의 순서를 뒤집는 뷰 반환하기 프로그래머스에서 자연수를 뒤집어 배열로 만드는 문제를 풀다가 reversed() 메서드를 알게 되었다. 이를 정리해 보기 위해 이번 포스팅을 하게 되었다. 아래의 공식 문서를 참고 했다. reversed() | Apple Developer Documentation 📌 정의 Returns a view presenting the elements of the collection in reverse order. 컬렉션의 요소를 반대 순서로 표시하는 뷰(view)를 반환한다. 여기서 중요한 것은 단순히 반대 순서로 만드는 게 아니라 이를 표시하는 뷰를 반환하는 것이다. 따라서 다시 그 컬렉션을 원하면 메서드를 사용한 이후 형 변환을 해야 한다. 📌 선언 func reversed() -> ReversedCollec.. 2023. 4. 7.
[백준] (Swift) 2981번: 검문 📌 문제 [백준] (Swift) 2981번: 검문 📌 풀이 문제를 푸는데 수학적인 센스가 필요한 문제가 있는데 이 문제가 대표적인 것 같다. 입력 받는 값을 '나머지'의 관점으로 다시 생각해 보자. 종이에 적힌 모든 숫자를 적은 배열 papers에서 임의의 숫자 m으로 나누었을 때 나머지가 같은 두 요소를 A, B라 하자. 이를 아래와 같이 표현할 수 있을 것이다. $papers\begin{cases} A = ma + r \\ B = mb + r \end{cases}$ 두 요소를 한번 빼 보면 나머지가 없어지는 걸 확인할 수 있다. $A - B = m(a - b)$ 아래 2가지가 문제 풀이의 핵심인 것 같다. 이렇게 나머지를 없앤 요소를 하나씩 모아서 최대공약수를 구하고 1번을 제외한 최대공약수의 공약수.. 2023. 4. 7.
[Swift] 기본 연산자(Basic Operators) 📌 용어(Terminology) 1. 단항 연산자(Unary Operator) 단일한 항목(single targets)에 작동하는 연산자. 접두사(prefix)와 접미사(postfix)로 나누어짐. var a, b, c -a b c! 2. 이항 연산자(Binary Operator) 2개의 항목(two targets)에 작동하는 연산자. 2개의 항목 사이에 위치해야 하므로 모두 삽입사(infix)에 해당함. 3 + 5 4 - 9 3. 삼항 연산자(Ternary Operator) 3개의 항목(three targets)에 작동하는 연산자. 스위프트에서는 '삼항 조건 연산자(ternary conditional operator)'라는 오직 하나의 삼항 연산자만 갖고 있다. a ? b : c // condition.. 2023. 4. 6.
[CS50 2019] (컴퓨팅 사고) 알고리즘 이전 강의에서는 이진법으로 컴퓨터에 정보를 표현하는 방식을 배웠다. 그 중에서도 문자나 색상을 표현하는 방식을 알아 보았다. 이번에는 이러한 정보를 어떠한 논리적인 과정을 통해 필요한 정보로 가공되는지 알아 보자. [CS50 2019] (컴퓨팅 사고) 정보의 표현 앞선 강의에서는 컴퓨터가 어떻게 정보를 표현하는 방법에 대해 알아 보았다. 이번에는 컴퓨터가 실제로 문자나 사진, 음악, 동영상 등의 다양한 정보를 처리하는 방식에 대해 알아 보자. 📌 문 andy-archive.tistory.com 📌 알고리즘(Algorithm) 알고리즘은 문제를 해결하기 위해 설계한 논리 과정이다. In a concept of problem solving, algorithm is just a step by step inst.. 2023. 4. 6.
반응형