
빌딩의 앞, 뒤 두 빌딩의 층만 생각하자.대신, 맨 첫번째, 두번째 빌딩과 맨 끝 빌딩, 끝에서 두번째 빌딩의 예외처리만 완벽하게 해주기.매우 쉬운 문제.

이 문제는 dfs 방식으로 접근해서 해결했다.주의할 점은, 맨 가장자리 부분의 코어는 체크하지 않는 것,그리고, 전부 하나씩 확인하는 방법으로 문제를 해결했다.

BFS, 넓이 우선 탐색

우선 base64 인코딩 방식 부터 이해하자.

N \* N 크기의 체스판 안에 N 개의 퀸이 서로 공격하지 못하는 위치에 존재해야한다.

숫자 하나 하나 옮기자.거대한 큐브를 분해해서, 테두리만 돌린다고 생각하자.

dfs 방식으로 해결.그래프 형태로 입력을 받고, 시작 정점과 도착 정점의 Vistited 를 만들어, 최대로 방문한 경우의 수를 length에 저장한다.

우선 그림의 좌표 형식을 우리가 사용하기 쉽게 배열 형태로 변환한다.

우선 이 문제를 풀려면 페르마의 소정리, 거듭제곱의 분할정복 방법을 알아야지만 풀 수 있다.

풀이. 문제를 잘 이해하자.

이 문제는 동적 프로그래밍으로 풀어야한다.동적 프로그래밍으로 해결하기 위해서, 점화식을 찾아야 하며..해당 점화식을 프로그래밍 하면 된다.점화식을 어떻게 찾는지가 관건이다.

LIS 문제는 동적 프로그래밍으로 해결할 수 있는 가장 대표적인 문제이다.

이 문제는 에라토스테네스의 체 공식으로 문제를 풀어야 한다.

가장 처음 접근 방법은 브루트 포스로, dfs 로 모든 경우의 수를 하나하나 비교 하려고 했다.

우선, 모든 순열을 구하는 게 아니라는 점. 문제를 잘 읽자.나열 된 숫자들의 순서가 있는 조합으로, 만들 수 없는 가장 작은 값을 출력하는 문제이다.그 말은 즉슨, 카드 1장으로 조합 해서 만들 수 있는 수.그게 없다면 순서가 존재하는 카드 2장으로 조합 해서 만들

처음에는 힙 자료구조를 직접 배열로 만들어서 풀어보려고 했으나, 10개의 테스트 케이스에서 9개만 통과하거나, 계속해서 시간초과가 발생하여 heapq 라이브러리를 이용해서 해결했다.