목록dp (9)
MUKER_DEV with iOS
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0tP9p/btr9NlVPdgU/wFrmEOsUKmWlgCdoIE3bC0/img.png)
17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 나의 풀이 let n = Int(readLine()!)! var dp = [Int](repeating: 5, count: n+1) dp[0] = 0 for i in 1...n { var j = 1 while j * j
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnZeCV/btr9NEGMmND/FvJI6Q4FwYgu4avijlOkjk/img.png)
11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 나의 풀이 var a = [0,1,3,5] for i in 4...1000 { a.append((a[i-1] + a[i-2] * 2) % 10007) } print(a[Int(readLine()!)!]) 풀이 키워드 DP 타일링 문제
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cKLoPH/btr9pcjFASV/PcKsSZkodVXsQJEePSXNBk/img.png)
11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 나의 풀이 var a = [0,1,2] for i in 3...1001 { a.append((a[i-1] + a[i-2]) % 10_007) } print(a[Int(readLine()!)!]) 풀이 키워드 DP 타일링 문제
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rb2bK/btr9nnlBJ3p/oLKSa28j1Au3sKKFhLXfKK/img.png)
9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 나의 풀이 var a = [0,1,1,1,2,2,3,4,5,7,9] for i in 11...100 { a.append(a[i-2] + a[i-3]) } for _ in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qvsDd/btr9kiZJENX/hX8DTEHckW1aTYvMIM9pw1/img.png)
9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 나의 풀이 var a = Array(repeating: 0, count: 12) a[1] = 1 a[2] = 2 a[3] = 4 for i in 4...11 { a[i] = a[i-1] + a[i-2] + a[i-3] } for _ in 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qITvf/btr8eW2PVGN/QxzHGRNUxZikwuTgyWBNr0/img.png)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 func solution(_ land:[[Int]]) -> Int{ var myland = land for i in 1..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dgYe5u/btr60DdyjFR/Lu9oV18wDNnbNm9lqKp9ck/img.png)
1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 나의 풀이 struct Node { // r,c를 넘겨주기 위한 node var r: Int var c: Int } let MN = readLine()!.split(separator: " ").map { Int($0)! } let M = MN[0] // 세로의 크기 let N = MN[1] // 가로의 크기 let rx = [0,0,-1,1] // x축 이동 let ry = [1,-1,0,0] // y축 이동 var map = [[Int]]() var cnt ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgdoot/btr6ZA8F6gN/IkIGiz8w6fN3T2i70yUkrK/img.png)
12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 나의 풀이 let NK = readLine()!.split(separator: " ").map { Int($0)! } let N = NK[0] let K = NK[1] var goods = Array(repeating: [Int](), count: N+1) // [weight, value] for i in 1...N { goods[i] += readLine()!.split(separator: " "..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EgH0u/btr6Gp6D9LK/cEBlO2d88mBpF9alw7tIx0/img.png)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 func solution(_ board:[[Int]]) -> Int { var myBoard = board let N = board.count let M = board[0].count for i in 1..