본문 바로가기

반응형

분류 전체보기

(400)
[BOJ] 백준 11054 가장 긴 바이토닉 부분 수열 (Swift) 문제 https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 풀이 이 문제는 가장 긴 증가하는 부분 수열 문제를 응용하는 문제입니다. https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 3..
[BOJ] 백준 11053 가장 긴 증가하는 부분 수열 (Swift) 문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 풀이 수열 A = {10, 20, 10, 30, 20, 50} 경우에 가장 긴 증가하는 부분 수열을 찾아봅시다. 첫번째 요소인 10만 봤을 때, 자기 자신도 수열이기 때문에 길이는 1입니다. 두번째 요소에서 이전 요소들을 확인해봅시다. 10 보다 20이 크기 때문에 (10의 길이 + 1)이 증가하는 부분 수열의 길..
[BOJ] 백준 2156 포도주 시식 (Swift) 문제 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 풀이 계단 오르기 문제와 비슷한 문제였습니다. 하지만 계단 오르기와 다르게, 마지막 포도주를 꼭 먹어야 하지는 않습니다. [1, 99, 100, 2] 와 같은 경우 99와 100을 먹는게 가장 큰 값입니다. 마지막 2를 먹을 필요가 없습니다. [100, 99, 1, 2, 100, 1] 로 포도주가 나열되어 있다고 가정합시다. 첫번째 포도주 까지 있다면, 첫번째 포도주를 마셔야 무조건 가장 많이..
[BOJ] 백준 10844 쉬운 계단 수 (Swift) 문제 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 N이 1일 때는 1...9 까지의 수가 계단 수 입니다. N이 2일 때 앞의 자리가 1인 경우, 0 2 2인 경우, 1 3 3인 경우, 2 4 4인 경우, 3 5 .. 7인 경우, 6 8 8인 경우, 7 9 9인 경우, 8 N이 2일때, 끝나는 수가 0과 9가 아닌경우는 2번씩 등장하게 됩니다. 예를 들어 끝나는 수가 3인 경우, 앞의자리가 2일때와 4일때 2번 등장합니다. 정의 : $f(n, d)$ = 길이가 n, 마지막 자리의 수가 d인 계단수 구하는 답 : $f(n,0) + f(n,1) + ....
[BOJ] 백준 1463 1로 만들기 (Swift) 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 이 문제는 1을 다른 해당 숫자로 만드는 방법의 최소 연산의 수를 구하는 것으로도 생각할 수 있습니다. 1은 1이니깐 0이고, 2는 1에서 1을 더해서 만들 수도 있고, 2를 곱해서도 만들 수 있으므로 최소 연산의 수는 1이고, 3은 1에서 1을 두번 더하는 방법과 3을 곱해서 만들 수 있습니다. 1을 두번 더하는 방법은 연산의 횟수가 2이기 때문에 3을 곱해서 만드는 연산을 1번 사용하는 것이 최소 연산의 수 일 것입니다. 4도 1에서 1을 세번 더하는 방법, 2에서 2를 곱하는 방법으로 나뉘게 됩..
[BOJ] 백준 2579 계단 오르기 (Swift) 문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 풀이 계단은 한번에 1칸 혹은 2칸씩 오를 수 있습니다. 다만 세칸을 연속해서 밟을 수는 없습니다. 첫번째 계단만 있는 경우 점수의 최대값은 첫번째 계단을 밟는 것 입니다. 두번째 계단만 있는 경우 점수의 최대값은 첫번째와 두번째 계단을 밟는 것 입니다. 계단의 점수는 자연수이므로, 둘 다 밟는 것이 점수가 무조건 높습니다. 세번째 계단이 있는 경우는 첫번째를 밟고, 세번째를 밟는 경우 두번째를 밟고, ..
[BOJ] 백준 1932 정수 삼각형 (Swift) 문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 왼쪽 대각선 혹은 오른쪽 대각선으로 내려오면서 수들을 더해주고, 가장 큰 수를 구하는 문제입니다. 2차원 배열에 입력을 담아줍시다. 이 테두리에 있는 수들은 위에 수에서 내려올 수 있는 경로가 하나밖에 없습니다. 테두리에 있는 수는 x좌표가 0이거나, y좌표와 x좌표가 같은 경우입니다. x좌표가 0일 때는 (y - 1, x) 에서 내려오는 경로밖에 없습니다. y좌표와 x좌표가 같은 경우일 때는 (y - 1, x - 1) 에서 내려오는 경로밖에 없습니다. 하지..
[BOJ] 백준 1149 RGB거리 (Swift) 문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 풀이 이 문제의 규칙을 쉽게 설명하면 같은 색으로 연속되게 집을 색칠하지 않고 집을 모두 칠하는 비용의 최소 값을 구해라! 입니다. 1번 집을 빨강으로 칠했다면, 2번 집은 초록과 파랑중에서 골라서 칠해주어야 합니다. 저는 다이나믹 프로그래밍을 떠올렸습니다. 3 * n 크기의 2차원 배열을 사용하였습니다. 초기 값은 처음 집을 칠하는 것이므로, 각각의 칠한 비용으로 설정..

반응형