본문 바로가기

전체 글

(426)
[Algorithm] [Python&Swift] 백준/BOJ - 11399 _ ATM 11399 - ATM 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 =..
[Algorithm] [Python&Swift] 백준/BOJ - 2839 _ 설탕 배달 2839 - 설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 상근이가 배달하는 봉지의 최소 개수..
[iOS] RxSwift 시작하기 RxSwift 시작하기 앞서 RxSwift에 대하여 간단히 알아보고 개념을 익혔다. 이제 본격적으로 RxSwift를 공부하며 사용해보도록 한다. 비동기 프로그래밍(Asynchronous Programming) 일반적인 Class에서는 비동기 작업을 수행하고 이에 따른 모든 UI 구성을 기본적으로 비동기로 처리하기 때문에 코드가 어떠한 흐름으로 진행될 지 예측하는 것이 어렵다. 뿐 만 아니라, 코드는 사용자의 입력 혹은 네트워킹 환경 등 다양한 외부 요인에 의하여 다르게 실행된다. Apple은 이러한 비동기에 대응하기 위해 아래와 같은 다양한 기능들을 제공하고 있다. NotificationCenter : 특정 이벤트가 발생할 경우에 진행할 코드를 작성해놓고 해당 이벤트가 발생하면 코드를 진행시키는 방법. ..
[Algorithm] [Python & Swift] 백준/BOJ - 4949 _ 균형잡힌 세상 4949 - 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호..
[Algorithm] [Python&Swift] 백준/BOJ - 2563 _ 색종이 2563 - 색종이 문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 ..
[Algorithm] [Python & Swift] 백준/BOJ - 2167 _ 2차원 배열의 합 2167 - 2차원 배열의 합 문제 2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다. 입력 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 합을 구할 부분의 개수 K(1 ≤ K ≤ 10,000)가 주어진다. 다음 K개의 줄에는 네 개의 정수로 i, j, x, y가 주어진다(i ≤ x, j ≤ y). 출력 K개의 줄에 순서대로 배열의 합을 출력한다. 배열의 합은 231-1보다 작거나 같다. 제출 코드 Swift l..
[iOS] KingFisher 소개 KingFisher KingFisher 소개 KingFisher 는 iOS에서 이미지를 간편하게 관리할 수 있도록 기능을 제공하는 오픈소스 라이브러리다. 물론 Alamofire 혹은 URLSession 등을 이용해 네트워킹을 통하여 이미지를 다운로드한 뒤 이를 다룰 수 있다. 하지만, 많은 양의 이미지 데이터가 필요한 경우 혹은 큰 용량의 이미지들을 다뤄야 하는 경우에는 앱 성능에 심각한 영향을 줄 수 있으므로 이러한 상황에 보다 효율적으로 대처하기 위해 여러가지 추가 작업이 필요하고 네트워킹 작업이 필요한 부분은 비동기 처리를 진행해줘야 한다. 이러한 번거로운(?) 작업들을 위해 KingFisher는 아래 기능들을 제공한다. 비동기 이미지 다운로드 및 캐싱 URLSession 기반 네트워킹 메모리와 디..
[Algorithm] [Python & Swift] 백준/BOJ - 2960 _ 에라토스테네스의 체 2960 - 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(2, K) < N ≤ 1000) 출력 첫째 줄에 K번째 지워진 수를 출력한다. 제출 코드 Swift let input = readLine()!.split(separator..