본문 바로가기

반응형

분류 전체보기

(395)
[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엔이 충분히 있고, 언제나 거스름돈 ..
[BOJ] 백준 1316 그룹 단어 체커 (Swift) 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 풀이 Stack을 사용하면 쉽게 풀 수 있는 문제 입니다. 입력받은 단어에 대해 하나씩 확인하면서 스택에 넣어줍니다. 만약 Stack이 비어있지 않고, 스택의 꼭대기의 값이 현재 들어올 문자와 같다면 스택을 pop 해줍니다. 그 이후 스택에 현재 들어올 문자를 넣어줍니다. 그렇다면 ccazzzzbb 문자열이 들어온다면 어떤식으로 동작할까요? 스택이 비어있기 때..
[BOJ] 백준 2941 크로아티아 알파벳 (Swift) 문제 풀이 문제에 주어져있는 크로아티아 알파벳 테이블을 보고 입력받은 단어를 테이블에 맞게 알맞게 치환해주면 되는 문제! 왜 치환을 해야하냐면 예를들어 "adz="와 같은 문자열이 있다면, "dz="에서 한 번 세고, "z="에서 한 번 더 세버리기 때문입니다. "dz="를 보고 "dž"로 치환한다면 "z="가 사라지기 때문에 치환할 수 없기 때문에 이 점을 이용하기 위해서 치환해줍니다. 하지만 굳이 표에있는 알파벳으로는 치환해줄 필요는 없습니다.. 왜냐하면 크로아티아 알파벳으로 변경해주는 문제가 아닌 몇 개의 크로아티아 알파벳으로 이루어져 있는지의 수를 세는 문제이기 때문입니다. Swift에서는 문자열을 확인하면서 치환하는 replacingOccurrences(of:with:) 메서드를 사용할 수 있습..

반응형