전체 글282 [OS] 04. 프로그램의 구조와 실행 1. 프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 프로그램의 주소 영역은 크게 코드(code), 데이터(data), 스택(stack)영역으로 구분된다. 코드 : 프로그램 함수들의 코드가 기계어 명령 형태로 변환되어 저장되는 부분 데이터 : 전역 변수등 프로그램이 사용하는 데이터는 저장하는 부분 스택 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 부분 인터럽트의 동작 원리는 함수의 호출과 비슷하다. A 프로그램이 CPU를 할당받아 명령을 수행중일 때 인터럽트가 발생할 경우 A는 현재 수행 중인 명령의 위치를 저장해놓는다. 그 후 인터럽트 처리루틴으로 넘어가 인터럽트를 처.. 2021. 12. 20. [LeetCode] 436. Find Right Interval (Swift, Python) Find Right Interval - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 start 배열에 입력으로 주어지는 intervals 배열의 [i번의 start, i]와 같은 형태로 값을 담아주고 i번의 start를 기준으로 start 배열을 정렬한다. 그 후 intervals를 돌면서 end 값에 대해서 문제에 주어진 조건대로 start를 찾아주는 이분 탐색을 진행했다. 코드 [Swift] typealias startElement = (start: .. 2021. 12. 17. 1072. 게임 (Swift, Python) 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 풀이 이분탐색을 사용하여 해결하는 문제. 몇 번의 게임을 더 해야 하는지를 기준으로 잡으면 되는 간단한 문제였다. 간단한 문제인데 정답 비율이 낮았던건 Z를 구할 때 실수 연산에서 발생하는 오차때문인 것 같다. 처음 python으로 문제를 풀 때 Z를 구하는 식으로 다음과 같이 사용했다. Z = math.trunc((Y / X) * 100) 위와 같이 Z를 구했을 때 오답이 나왔는데 Y / X 연산에서 실수 관련해서 오차가 발생하기 때문이라는것 같다. 그.. 2021. 12. 16. [iOS] Date Picker - 날짜 선택 UIDatePicker를 사용하여 날짜를 선택하는 방법을 알아보자. 먼저 아래 사진과 같이 빈 화면에 하나의 텍스트 필드를 만들었다. 이제 저 텍스트 필드를 선택했을 때 날짜를 선택할 수 있는 창이 뜨도록 구현해보자. 먼저 뷰 컨트롤러에 텍스트 필드와 연결된 outlet 변수를 만들었고 UIDatePicker 객체의 인스턴스에 해당하는 프로퍼티와 datePicker에서 선택한 날짜를 담아줄 Date형 프로퍼티를 만들었다. import UIKit class ViewController: UIViewController { @IBOutlet weak var dateTextField: UITextField! private let datePicker = UIDatePicker() private var date: D.. 2021. 12. 14. [고득점 Kit (이분탐색)] 징검다리 (Swift, Python) 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr 풀이 바위가 최대 50,000개까지 있을 수 있고 이 중에서 n개를 제거해야 하는데 n개를 제거하는 경우의 수를 따지면 시간초과가 날 것이다. 이분탐색을 사용하는데 어떤 값을 기준으로 이분탐색을 해야할지 정해야한다. 문제에서 바위를 n개 제거한 뒤 각 지점 사이의 거리의 최솟값 중에 가장 큰 값을 구하라고 하였다. 그렇기 때문에 각 지점 사이의 거리를 기준으로 하여 이분탐색을 진행했다. 시작점은 0으로 두고 끝점은 입력 값으로 주어진 distance.. 2021. 12. 14. [OS] 03. 컴퓨터 시스템의 동작 원리 1. 컴퓨터 시스템의 구조 컴퓨터는 내부장치인 CPU, 메모리와 외부장치인 디스크, 키보드, 마우스, 모니터 등으로 구성된다. 컴퓨터는 외부장치에서 내부장치로 데이터를 읽어와 각종 연산을 수행한 후, 그 결과를 외부장치로 다시 내보내는 방식으로 업무를 처리한다. 컴퓨터 내부로 데이터가 들어오는 것을 입력(input), 외부장치로 데이터가 나가는 것을 출력(output)이라고 한다. 메모리 및 입출력장치 등의 각 하드웨어 장치에는 이들을 제어하는 작은 CPU인 컨트롤러라는 것이 존재한다. 운영체제는 각종 자원들을 관리해야 하므로 컴퓨터의 전원이 켜진 순간부터 항상 메모리에 올라가 있다. 하지만, 전체가 올라가지 않고 운영체제 중 핵심적인 부분만 항상 메모리에 올라가 있으며 이 부분을 커널(kernel)이라.. 2021. 12. 14. [고득점 Kit (이분탐색)] 입국심사 (Python, Swift) 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 풀이 해당 문제가 이분탐색을 활용해야 하는지 여부는 문제의 제한사항을 잘 살펴봐야 한다. 제한사항을 보면 입국심사를 기다리는 사람이 최대 10억명이고 각 심사관이 한 명을 심사하는데 걸리는 시간은 최대 10억분이라고 주어져 있다. 문제에서 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 구하라고 하였는데 제한사항을 봤을 때 이분탐색을 활용해야 하는 문제라고 생각할 수 있어야 한다(이분탐색 문제라는 것을 알고 풀기 시작했지만!) 어쨌든 문제에서 심사에 걸리는 시간.. 2021. 12. 14. [OS] 02. 운영체제 개요 1. 운영체제의 정의 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어 운영체제는 컴퓨터의 전원이 켜짐과 동시에 실행되며 동시에 메모리에 올라간다. 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용한다. 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부르며 이를 좁은 의미의 운영체제라고도 부른다. 2. 운영체제의 기능 1. 컴퓨터 시트템 내의 자원(resource)을 효율적으로 관리하는 것 - 하드웨어를 위한 역할 2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것 - 사용자를 위한 역할 편리한 환경 제공이란 운영체제가 여러 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 '환상'을 제공하.. 2021. 12. 13. [iOS] UITabBarController - 다중 선택 인터페이스 다중 선택 인터페이스를 관리하는 컨테이너 뷰 컨트롤러로, 선택으로 화면에 표시할 하위 뷰 컨트롤러가 결정된다. @MainActor class UITabBarController : UIViewController tab bar 인터페이스는 화면의 하단에 탭을 표시하여 서로 다른 모드를 선택하고 선택된 모드에 대한 뷰를 화면에 표시한다. 각 탭은 사용자 지정 뷰 컨트롤러와 연결된다. 사용자가 특정 탭을 선택하면 tabBarController는 해당 뷰 컨트롤러의 root view를 화면에 표시하여 이전 뷰를 대체한다(사용자 탭은 이전에 선택한 탭에 관계없이 항상 탭의 root view를 표시한다. 이는 탭을 이미 선택한 경우에도 마찬가지다.). 아래의 사진은 UITabBarController를 사용한 예시다... 2021. 12. 12. 이전 1 ··· 17 18 19 20 21 22 23 ··· 32 다음