본문 바로가기

분류 전체보기282

[LeetCode] 1663. Smallest String With A Given Numeric Value (Swift, Python) Smallest String With A Given Numeric Value - 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 풀이 앞에서부터 차례대로 문자열을 만들어나간다. 사전순으로 가장 앞에 있는 문자열을 구하기 위해서는 앞의 자리에 최대한 a에 가까운 문자로 만들어야한다. 현재 채워야 하는 자리 이후에 가장 큰 z를 채운다고 가정했을 때 k를 만족할 수 있는지를 따져보면 된다. 예제의 n = 5, k = 73을 생각해보자. 현재 채워야하는 첫 번째 자리를.. 2022. 1. 6.
[iOS] Content Hugging과 Content Compression Resistance iOS의 오토 레이아웃 설정중에, Content Hugging Priority와 Content Compression Resistance Prioirty가 존재한다. 이 둘을 언제 어떻게 사용하는지 알아보자. 먼저 둘을 간단히 정리하자면 다음과 같다. Content Hugging Priority : 우선순위가 높으면 내 크기 유지. 우선순위가 낮으면 크기가 늘어남. Content Compression Resistance Priority : 우선순위가 높으면 내 크기 유지. 우선순위가 낮으면 내 크기가 작아짐. 간단한 예제를 통해 둘을 확인해보자. 1. Content Hugging Priority 위의 그림과 같이 두 개의 라벨이 존재하는데 두 라벨 모두 top / leading / trailing이 60/.. 2022. 1. 4.
[OS] 09. 디스크 관리 1. 디스크의 구조 디스크에 데이터가 저장될 때에는 논리블록 단위로 저장되고, 외부로 입출력이 일어날 때에도 논리블록 단위로 전송된다. 논리블록에 저장된 데이터를 접근하기 위해서는 해당 블록의 인덱스 번호를 디스크에 전달해야 한다. 각 논리블록이 저장되는 디스크 내의 물리적인 위치를 섹터(sector)라고 부른다. 디스크는 마그네틱의 원판으로 구성되며 하나일 수도 있고 여러 개일 수도 있다. 각각의 원판은 트랙(track)으로 구성되고 각 트랙은 섹터로 나뉘며, 섹터에 최소한의 단위 정보가 저장된다. 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합을 실린더(cylinder)라고 부른다. 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동한후 원판이 회전하여 디스크.. 2022. 1. 3.
[고득점 Kit(탐욕법)] 단속카메라 (Python) 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 풀이 차량의 진입/전출에 따른 범위를 그림으로 그려서 판단하면 쉽게 해결 가능하다. 먼저 입력으로 주어진 routes를 전입을 기준으로 오름차순 정렬을 한다. 그 후 다음과 같이 경우를 나누어 for문을 돌면서 이에 맞게 처리를 해주면 된다. 먼저 처음 차량의 범위에 단속카메라를 설치한다고 가정하고 시작한다. 참고로 카메라의 설치 범위에서 시작 부분은 따로 신경쓰지 않는다. 어차피 정렬을 하고 나면 진입 지점은 항상 뒤일 것이기 때문에 카메라의 설치 범위 역시 그에 맞춰서 좁아진다고 생각하면 된다. (1) 다음 차량의 진입 지점(nowStart)이 이전 차량의 전출.. 2022. 1. 3.
[고득점 Kit(탐욕법)] 섬 연결하기 (Swift, Python) 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 풀이 섬을 연결할 때 일단 가장 적은 비용의 다리를 먼저 사용해야 하므로 입력으로 주어진 costs를 비용을 기준으로 오름차순 정렬을 한다. 그 후 차례대로 다리를 사용해가면서 이미 연결된 두 섬에 대한 다리인지를 체크한다. 이미 두 섬이 연결되어 있으면 해당 다리를 사용하지 않고 넘어간다. 다리를 사용할때마다 몇 개의 다리를 사용했는지 체크한다. n개의 섬이 모두 연결되기 위한 최소 다리 개수는 n-1개이기 때문에 다리가 n-1개가 사용됐다면 탐색을 종료한다. 코드 [Swift] import Foundation var edges: [[Int]] = Array.. 2022. 1. 2.
[OS] 08. 가상메모리 운영체제는 메모리의 연장 공간으로 디스크의 스왑 영역을 사용한다. 그렇기 때문에 운영체제는 프로그램이 물리적 메모리를 고려할 필요 없이 자기 자신만이 메모리를 사용하는 것처럼 가정해 프로그램하는 것을 지원한다. 프로그램은 0번지부터 시작하는 자기 자신만의 메모리 주소 공간을 가정할 수 있는데, 이러한 메모리 공간을 가상메모리(virtual memory)라고 부른다. 즉 가상 메모리는 프로세스마다 각각 0번지부터의 주소 공간을 가지게 되며, 이들 공간 중 일부는 물리적 메모리에 적재되고 일부는 디스크의 스왑 영역에 존재하게 된다. 프로세스의 주소 공간을 메모리로 적재하는 단위에 따라 가상메모리 기법은 요구 페이징 방식과 요구 세그먼테이션 방식으로 구현될 수 있다. 대부분의 경우는 요구 페이징 방식을 사용한.. 2022. 1. 1.