[구현] 백준 실버5 20546번: 기적의 매매법(Swift)
·
코테
https://www.acmicpc.net/problem/20546 20546번: 🐜 기적의 매매법 🐜 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다. www.acmicpc.net 풀이과정 구현 문제이기 때문에 지문을 천천히 읽으면서 문제를 이해하려고 노력했다. 간단 정리하자면, 준현은 주식을 살 수 있는 돈이 있으면 그때그때 최대로 매수하며, 끝까지 팔지 않는다. 성민의 경우 3일 이상 연속으로 주가가 하락하면 그때 돈이 되는 만큼 풀매수하며, 반대로 3일 연속 상승하면 그때 풀매도 한다. 때문에 두개의 변수를 두어 하락과 상승일 수를 카운팅 하여..
[BFS] 백준 실버1 2178번: 미로 탐색(Swift)
·
코테
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이과정 그래프이면서, 최단거리를 찾는 문제이기 때문에, BFS를 활용하는 것이 가장 알맞은 방법이다. BFS를 구현하기 위해선 Queue를 활용해야하기 때문에 먼저 Queue를 구현하였다. struct Queue { var memory = [T]() var index = 0 var isEmpty: Bool { memory.count < index + 1 } mutating func inQueue(element: T) { mem..
[다이나믹 프로그래밍] 백준 실버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을 하면 미리 계산했던 값이 되는것을 알 수 있다. 규칙성을 좀더 한눈에 ..
[구현 + 재귀] 백준 실버5 17478번: 재귀함수가 뭔가요?(Swift)
·
코테
https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 풀이과정 재귀 함수는 함수 내부에서 자기 자신을 추가로 호출하는 함수이다. 때문에 조건에 따른 제어가 없을 경우 무한이 반복 호출되는 함수가 된다. 제출 Code let count = Int(readLine()!)! let underBar = "____" print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.") answer(c: 0) func answer(c: Int) { p..
[그리디] 백준 브론즈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..