본문 바로가기

전체 글282

[iOS] UIView.animate를 활용한 애니메이션 처리 어떤 버튼을 클릭했을 때 특정 라벨은 숨기고 특정 라벨은 나타나게 처리할 때 isHidden 속성을 사용하여 처리할 수 있다. isHidden을 사용하여 처리하면 다음과 같이 나타난다. 전체적인 코드는 다음과 같다. enum buttonStatus { case prev case next } class ViewController: UIViewController { @IBOutlet weak var beforeLabel: UILabel! @IBOutlet weak var afterLabel: UILabel! @IBOutlet weak var clickButton: UIButton! var status: buttonStatus = .prev override func viewDidLoad() { super.vi.. 2022. 1. 11.
[LeetCode] 1262. Greatest Sum Divisible by Three (Swift, Python) Greatest Sum Divisible by Three - 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 풀이 sums라는 원소 3개를 가진 배열을 하나 만들어서 사용하였다. 각각의 원소는 3으로 나눴을 때 나오는 나머지의 최대 합계를 나타낸다. 즉, sums[0]에는 3으로 나누어 떨어지는 숫자의 합 중 최댓값이 들어있다. 입력으로 주어진 nums 배열을 순차적으로 탐색해가며 더해주는데, 이때 각각의 sums 원소에 현재 숫자를 더해준다. 그러면 총 3개의 .. 2022. 1. 10.
[LeetCode] 846. Hand of Straights (Swift, Python) Hand of Straights - 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 풀이 먼저 입력으로 주어진 hand를 오름차순으로 정렬한다. 정렬된 hand에서 가장 앞에 있는(가장 작은) 카드를 손에 들고 현재 손에 있는 수에서 groupSize까지의 카드가 현재 배열에 존재하는지 체크한다. 예제에서는 처음에 손에 카드 1을 들고 2와 3이 있는지 체크한다. 2가 있다면 카운트를 하고 hand 배열에서 2를 제거한다. 다음으로 3이 있다면 카운트를 하고 ha.. 2022. 1. 9.
[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.