본문 바로가기

반응형

Swift

(356)
[BOJ] 백준 2775 부녀회장이 될테야 (Swift) 문제 풀이 이 문제는 다이나믹 프로그래밍 기법을 사용해서 쉽게 풀이할 수 있습니다. 먼저, 0층의 i호에는 i명이 산다. 라는 문제의 지문을 이용해서 0층, 1층, 2층... 바텀업 방식으로 답을 도출할 수 있다는 아이디어를 얻을 수 있습니다. 4호까지 있다고 가정하고 DP 테이블을 어떤식으로 채워나갈지 확인해보시죠..! 2층 3호는 어떤식으로 채워줘야 할까요?? 2층 3호 = 1층 1호 + 1층 2호 + 1층 3호 일 것입니다. n층 1호는 0층 1호가 1이기 때문에, 무조건 1이 될 수 밖에 없습니다. 1층 2호 = 0층 1호 + 0층 2호 겠죠?? 하지만 이것은 1층 1호 + 0층 2호 라고 해도 되겠죠?? 1층 3호는 어떨까요?? 1층 3호 = 0층 1호 + 0층 2호 + 0층 3호 겠네요. 0층..
[BOJ] 백준 10250 ACM 호텔 (Swift) 문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 먼저, 도착한 손님의 순서대로 방 배정을 하는 방법에 대해 이해를 해야합니다. 층(H) 수가 6, 방(W) 수가 3이라고 가정을 해보겠습니다. 101 -> 201 -> 301 -> 102 -> 202 -> 302 -> 103 -> ... -> 603 의 순서로 될 것입니다. 그렇다면 먼저 N번째 손님이 갈 층 수를 어떻게 구해야할까요? 층 수 구하기 층 수는 단순히 N % ..
[BOJ] 백준 2869 달팽이는 올라가고 싶다 (Swift) 문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 풀이 낮에는 A미터 올라가고, 밤에는 B미터 미끄러진다. 주의해야 할 점이 A미터를 올라갔을 때, 정상에 올라갔다면 미끄러지지 않는다. while문을 통해서 구할 수 있겠지만, 이 문제는 시간제한이 0.15초 입니다. 또한 A, B, V의 범위가 (1 ≤ B < A ≤ V ≤ 1,000,000,000) 이므로, A = 2, B = 1, V = 1,000,000,000 이라면... 약 10억번의 연산을 수행하는 while문으로는 시간안에 해결할 수 없..
[BOJ] 백준 1193 분수찾기 (Swift) 문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 풀이 먼저 지그재그 순서가 어떻게 되는지 확인을 해봐야 합니다. 보라색으로 색칠한 부분은 아래에서 위 순서로, 주황색으로 색칠한 부분은 위에서 아래의 순서로 진행이 됩니다. 보라색으로 색칠한 부분은 홀수번째 대각선이 되겠네요! 대각선의 크기는 1, 2, 3, 4 ... 순으로 늘어나고 있습니다. X번째가 주어졌다면 X보다 크거나 같아질 때 까지 대각선의 크기를 더해줘서 몇번째 대각선에 위치했는지 찾을 수 있습니다. 예를들어 X가 7이라면..? 7
[BOJ] 백준 2292 벌집 (Swift) 문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 풀이 문제에 그림이 있어서 그림을 보고 어떻게 풀어야할지 이해해봅시다. 먼저 그림에 선을 그어서 방을 어떻게 나누는지 확인해봅시다. 발로 그린 그림이지만.. 잘 살펴보면 1 (1) = 1개 2 ~ 7 (6) = 2개 8 ~ 19 (12) = 3개 20 ~ 37 (18) = 4개 ... 인 것을 확인할 수 있습니다. 따라서 1부터 시작해서 n보다 작을 때 까지 6 * i를 더해줍니다. (i는 계속해서 ..
[iOS] UITableView를 사용해 Cell별로 알맞는 데이터 보여주기 지난 포스팅에서 UITableView를 사용해서 화면에 Cell을 나타내도록 구현하였습니다. https://dev-mandos.tistory.com/66 [iOS] UITableView를 사용해서 화면에 Cell 나타내기 UITableView TableView는 하나의 열을 사용해서 데이터를 뷰에 나타내는 View 입니다. 또한 UITableView는 UIScrollView를 상속받고 있고, 수직 스크롤만 지원합니다. TableView는 어디에 사용될까요? 아이폰의 연 dev-mandos.tistory.com 그런데, 이제 이 Cell별로 알맞는 데이터를 보여줘야겠죠? 저는 Cell에 일정의 제목을 하나씩 보여주고 싶어요. 먼저 UITableViewCell을 상속받는 class 파일을 하나 만들어주겠습니..
[BOJ] 백준 1712 손익분기점 (Swift) 문제 https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 풀이 이 문제를 수학식으로 한 번 접근해보자. $A + B \times x \lt C \times x$ 따라서 $C \times x$가 더 커야 하므로 아래의 식이 성립할 것이다. $x = $$A \over C - B$ $+ 1$ 가변비용(B)이 판매비용(C)보다 크거나 같다면 아무리 물건을 팔아도 손익분기점을 넘길 수 없을 것이다. 소스코드 후기 수학적인 계산이 필요한 문제인 것 같다. 어려운 ..
[알고리즘] 그리디(Greedy) 알고리즘 (Swift) 그리디 알고리즘에 대해 알아보고 대표문제를 Swift로 한 번 풀어보겠습니다. 그리디 알고리즘이란? 그리디 알고리즘을 번역하면 탐욕 알고리즘 이라고 한다. 말 그대로 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 즉, 매 순간마다 최선의 경우를 고르고 다른 경우는 고려하지 않는다. 그리디 알고리즘의 어려운 점은 이 문제가 그리디가 맞는지 판별하는 것이 가장 어려운 것 같다. 계속해서 반례가 있는지 확인해야하고 고민해야 한다. 그리디 알고리즘은 정렬 알고리즘과 주로 짝을 이루기도 한다. 대표 문제 백준 5585 거스름돈 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 ..

반응형