Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

개발자 일기장.

백준 1793. 타일링 본문

취업/Algorithm.

백준 1793. 타일링

Azderica 2020. 5. 30. 13:41

1793 타일링

삼성 sw 기출문제

문제 알고리즘

  • DP
  • 큰수

풀이방법

점화식 : dp[n] = dp[n-2] * 2 + dp[n-1]

  • 핵심 코드
#include    <iostream>
#include    <string>
#include    <cstring>
#include    <algorithm>
using namespace std;

#define MAX 250 + 1

int num;
string cache[MAX];

string bigNumAdd(string num1, string num2) {
    long long sum = 0;
    string result;

    while (!num1.empty() || !num2.empty() || sum) {
        if (!num1.empty()) {
            sum += num1.back() - '0';
            num1.pop_back();
        }
        if (!num2.empty()) {
            sum += num2.back() - '0';
            num2.pop_back();
        }
        result.push_back((sum % 10) + '0');
        sum /= 10;
    }
    reverse(result.begin(), result.end());
    return result;
}


int main() {
    // solution
    cache[0] = cache[1] = '1';
    for (int i = 2; i < MAX; i++)
        cache[i] = bigNumAdd(bigNumAdd(cache[i - 2], cache[i - 2]), cache[i - 1]);

    // input & output
    while (~scanf("%d", &num))
        cout << cache[num] << "\n";

    return 0;
}

문제 후 느낀점

  • 큰 수 문제.

'취업 > Algorithm.' 카테고리의 다른 글

백준 2532. 반도체 설계  (0) 2020.05.30
백준 1987. 알파벳  (0) 2020.05.30
백준 1260. DFS, BFS  (0) 2020.05.30
[2020 KAKAO BLIND RECRUITMENT] 외벽 점검  (0) 2020.05.02
백준 14888. 연산자 끼워넣기  (0) 2020.05.02