[다이나믹 프로그래밍] 백준 실버3 1463번: 1로 만들기(Swift)
·
코테
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이과정 먼저, 몇가지 수를 직접 계산해 보았다. 정수 N의 범위는 [1 1 이기 때문에 => 1 3은 3/3 =1 -> 1 이기에 => 1 4는 4/2 = 2 -> 2/2 = 1 -> 1 => 2 5는 5 -1 = 4 -> 4/2 = 2 -> 2/2 = 1 -> 1 => 3 6은 6/3 = 3 -> 3/3 = 1 -> 1 => 2 이정도면, 규칙성이 보인다. 1, 2, 3은 각 0, 1, 1이고, 4부터는 2또는 3으로 나누거나 빼기 1을 하면 미리 계산했던 값이 되는것을 알 수 있다. 규칙성을 좀더 한눈에 ..
[그리디] 백준 브론즈1 4796번: 캠핑(Swift)
·
코테
https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 풀이과정 위 문제의 경우 강산이의 L일 휴가 동안 몇일 캠핑장을 이용할 수 있는지 계산하는 문제이다. 해당 캠핑장의 경우 연속된 P일 중 L일을 사용할 수 있다고 한다. 1번 케이스를 예로 들면, 강산의 휴가 기간은 20일이며, 캠핑장의 경우 연속된 8일 동안 5일을 사용할 수 있다. 강산이의 휴가를 8로 나눠보면, 몫이 2이고, 나머지가 4이다. 즉, 강산이의 휴가를 8일씩 나눠보면 8일이..
[이분 탐색] 백준 실버2 2805번: 나무 자르기(Swift)
·
코테
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 풀이과정 첫 시도는 주어진 나무 중 가장 높은 것을 기준으로 1씩 줄여가며 답을 탐색하였다. 역시, 시간 초과!! 런타임을 줄이기 위해선 탐색 횟수를 줄어야 한다. 때문에 하나씩 줄여가는 것이 아닌 중간 값을 탐색한다. 2번 예시에 따르면 가장 높은 나무는 46 절단기의 높이 최솟값은 0이므로 초기 max = 46 / min = 0 때문에 그에 중간값인 23..
[완전 탐색] 백준 브론즈2 2231번: 분해합(Swift)
·
코테
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이과정 분해합 문제의 경우 특정수 N에 대하여 생성자를 찾는 문제이다. 생성자 M은 [ M + M의 각 자릿수의 합 = N ] 위 조건을 만족하는 가장 작은 수이다. 위 문제의 경우 1부터 주어진 수 N까지 반복문을 통해 하나씩 대입해도 312ms 시간으로 통과한다. 하지만, 그것이 문제 출제의도는 아닌 것 같아 조건을 통해 시간을 단축시켜 보자. 위에서 언급했듯 생..
[구현 + 시뮬레이션] 백준 2578번: 빙고
·
코테
https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 난이도 실버 4 사용언어 Swift 카테고리 구현 + 시뮬레이션 풀이과정 이중 Int 배열의 빙고판을 만들고, 행, 열, 왼쪽 대각, 오른쪽 대각의 주어진 수를 카운팅 할 수 있는 변수를 만들어 준다. 입력된 수를 빙고판을 통해 좌표를 얻고, 해당 좌표를 통해 행과 열의 변수에 카운팅 한다. 만약, 좌표의 x, y 값이 같거나 둘의 합이 4인 경우 대각의 위치한 수이기 때문에 대각 변수에 추가로 카운팅 한다. ..
[iOS] Clean Architecture 파헤치기
·
iOS
안녕하세요.오늘은 Clean Architecture에 대해 알아보겠습니다.Clean Architecture 란?옛날 소프트웨어를 설계할 때, 많은 부분 하드웨어의 설계 방식을 많이 가져왔다고 합니다.하지만, 하드웨어와 소프트웨어의 가장 큰 차이점은 하드웨어는 한번 설계할 때 완벽히 설계하여 제품 출시 이후 오점이 없어야 합니다. 오점이 있다 하더라도, 이는 수정하기가 힘들죠.하지만, 소프트웨어는 버그가 생기면, 수정하여 다시 출시할 수 있고, 새로운 기능이 필요하다 생각되면, 추가하여 다시 출시할 수 있습니다.정리하면, 하드웨어는 설계 단계부터 완벽해야 하지만, 소프트웨어는 언제든 확장, 수정이 될 수 있도록 유연한 설계가 필요합니다.유연한 소프트웨어 설계를 위해 Clean Architecture와 같은..