본문 바로가기

반응형

분류 전체보기

(395)
[BOJ] 백준 13241 최소공배수 (Swift) 문제 https://www.acmicpc.net/problem/13241 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다 www.acmicpc.net 풀이 https://dev-mandos.tistory.com/156 [BOJ] 백준 1934 최소공배수 (Swift) 문제 https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배..
[BOJ] 백준 1934 최소공배수 (Swift) 문제 https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 풀이 최소공배수는 어떻게 구할 수 있을까요? 최소공배수는 두 수의 곱 / 최대공약수로 구할 수 있습니다. 그렇다면 최대공약수는 어떻게 구할 수 있을까요? 최대공약수는 소인수분해를 하여 공통된 소수를 찾아서 구할 수도 있겠지만, 유클리드 호제법을 사용하면 더 효율적으로 구현할 수 있습니다. 유클리드 호제법은 나머지를 구하는 연산을 통해 구현하는데, 간단하게 12와 30이 있..
[BOJ] 백준 11729 하노이 탑 이동 순서 (Swift) 문제 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 풀이 머리가 터질뻔 했던 문제입니다.. 하노이탑을 어떻게 재귀로 구현해야할지.. 정말 막막했습니다. 유튜브에서 본 하노이탑 알고리즘이 정말 많은 도움이 되었습니다. 이해가 잘 안간다면, 한 번 보시는 것을 추천드립니다! https://www.youtube.com/watch?v=FYCGV6F1NuY 1번 기둥(시작), 2번 기둥(보조), 3번 기둥(목표) 라고 나타내고, hanoi..
[BOJ] 백준 2447 별찍기 - 10 (Swift) 문제 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이 이 문제는 재귀를 사용해서 별을 찍는 패턴을 찾아 별을 찍어주는 문제입니다. n이 3일때, 9일때, 27일때를 한번 비교해봅시다. n이 3일때 첫번째 줄에서는 "*"이 3개 두번째 줄에서는 "*" 1개, " " 1개, "*" 1개 세번째 줄은 첫번째 줄과 동일합니다. n이 9일때 9줄을 3등분 해서 확인해봅시다. 1 ~ 3번째 줄은 n이 3일때 찍히는 패턴이 ..
[BOJ] 백준 24060 알고리즘 수업 - 병합 정렬 1 (Swift) 문제 https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 풀이 병합 정렬의 동작과정을 안다면 조금 더 쉽게 이해할 수 있습니다. 모른다면.. 일단 의사코드를 Swift 언어로 풀어서 작성해봅시다. 의사코드를 작성하는데 주의점이 하나 있습니다. merge 함수에서 t를 1번 인덱스로 초기화하는데, 이를 0으로 바꿔줍시다. 의사코드가 작성이 되었다면 병합 정렬이 정상적으로 동작이 될 것입니다. 이제 K번..
[BOJ] 백준 25501 재귀의 귀재 (Swift) 문제 https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 풀이 이 문제는 팰린드롬인지 판별하고, 판별하는데에 recursion 함수가 몇 회 호출하는지 횟수를 출력해주는 문제입니다. recursion 함수를 확인하면, 팰린드롬인지 아닌지를 맨 앞 인덱스, 맨 뒤 인덱스의 요소가 같은지 확인하고 다르다면 0을 리턴, 같다면 인덱스를 한 칸씩 옮겨서 다음 인덱스를 확인합니다. 그 후, 전부 같다면 1을 리턴하게 됩니다. 저는 작성된 recursion 함수를 Swift 언어로 옮겨서 작성하였고, 호출 횟수..
[BOJ] 백준 10870 피보나치 수 5 (Swift) 문제 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 피보나치 수는 dp, 재귀함수 등으로 구할 수 있습니다. 최대 n이 20이기 때문에 재귀함수로 구현을 해보겠습니다. 먼저 n이 2보다 작다면 n을 리턴해주면 됩니다. 왜냐하면 0번째 수는 0, 1번째 수는 1이기 때문입니다. n이 2보다 크다면? 피보나치 수를 구하는 함수의 파라미터로 n - 1(전)과 n - 2(전전)을 더해준 값을 리턴해주면 됩..
[BOJ] 백준 10872 팩토리얼 (Swift) 문제 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 팩토리얼을 구하는 방법으로는 for문, 재귀함수 등 으로 구현할 수 있습니다. for문을 사용하면 단순히 1 ~ n 까지 곱해주면 되겠죠? 재귀함수로는 어떻게 풀 수 있을까요? n이 0이나 1일때는 1을 return 해주고 n이 1보다 크다면 n * factorial 함수의 (n - 1)을 호출해주면 되겠죠?? 예를들어 3! 을 구한다고 하면 n이 3이므로 3 * factorial(n: 2) 호출 n이 2이므로 2 * factorial(n: 1) 호출 n이 1이므로 1 return fact..

반응형