백준 11328 strfry
백준 1919 애너그램
STL list 이용
풀이연결리스트 이용하여 별 어려움 없이 해결했다.
연결리스트와 vector 이용
백준 1874 스택수열
백준 2493 탑 문제는 stack pair를 활용하여 해결한다.
앞선 탑 문제와 비슷한 유형의 문제이며 스택을 활용한다.
자료구조 deque을 활용하는 문제이다.
2일 동안 생각해봤지만 풀지 못했다.어떻게 해야할 지는 알겠으나 구현 능력이 미달이었다.
전형적인 DFS 문제이다.계속해서 복습하고자 기록
DFS 기본예제이다.핵심은 이중 for 문을 통해 BFS를 돌릴 수 있는 좌표를 찾는 것
문제를 읽어보면 DFS 문제임을 알 수 있다.핵심은 익은 토마토를 시작으로 모두 DFS를 돌려야하기 때문에 처음부터 익은 토마토의 좌표를 큐에 넣어주고 시작한다.
BFS 문제이다.
백준 1697 숨바꼭질
DFS 문제 해결법은 이제 익숙하다.허나 제일 중요한 것은 이 문제가 DFS로 풀 수 있는가 없는가를 판단하는 것이다.이 문제는 전형적인 DFS 문제이다.
전형적인 DFS 문제에 약간의 조건문이 붙었다.
토마토 문제의 3차원 문제로 전형적인 DFS 문제이다.
전형적인 DFS 문제이다.
BFS를 이용하여 해결하는 문제이다.
(1,1)에서 시작하여 마지막 좌표 (N, M)로 향하는 최단거리 구하는 문제이며 BFS를 활용하는 전형적인 BFS문제이다.하지만 벽을 부술 수 있는 기회를 딱 한 번 줌으로써 완전히 어려운 문제가 되었다.
정말 어려운 문제였다.풀이를 봐도 어려워서 5번 넘게 봤다.
전형적인 BFS 문제이다.새로운 아이디어를 요구하지는 않지만, BFS로 구현할 수 있는 문제들을 짬뽕해놓은 느낌의 문제로 구현해야 할 것이 많으며 실수할 여지가 있다.
아이디어BFS를 활용한다.각 섬의 좌표에 번호를 부여하여 BFS로 순회하면서 섬을 구분한다.
수빈이가 시작점부터 갈 수 있는 경우의 수에 최단 거리를 기록하면서 동생을 찾아나선다.BFS를 이용한다.
BFS 활용하는 문제이다.벽 부수고 이동하기와 체스판 말 이동하기 문제를 합쳐놓은 듯하다.
드디어 재귀문제이다.수학적 귀납법을 이용하여 문제를 해결한다.
전형적인 재귀 문제이다.
중복을 허락하지 않는 순열을 출력하는 문제이다.수열을 담을 배열 설정중복 체크할 배열 설정배열의 수가 m개가 되면 출력아니면 1~n까지의 수 중 중복이 아닌 수를 찾아 배열에 삽입next_permutation을 사용한다.
아이디어경우의 수를 잘 따져야 한다.우선 한 행에는 하나의 퀸만 놓일 수 있다는 것은 바로 알 수 있다.이외에 3개의 경우의 수를 따져야 한다.한 열에 하나씩좌상우하 대각선우상좌하 대각선경우의 수만 잘 따졌다면 그렇게 어려운 문제는 아니다.
BFS와 시뮬레이션이 합쳐진 응용문제라 할 수 있다.
어려운 문제는 아니었으나 구현에 있어 약간 헷갈리는 부분이 있다.
벽을 세워 바이러스를 막는 문제이다.조합을 이용하여 어렵지 않게 해결했다.
조합을 이용한 문제이다.그리 어렵지 않았으나 더 간단한 풀이가 존재했다. 생각을 더 깊게 하고 나은 방법을 찾아 구현하자. 무작정 덤벼들지 말고, 무조건 생각을 하고 풀이하자
DP를 활용하여 문제를 해결할 수 있다.
Dynamic Programming을 이용하는 문제이다.이 문제는 1차원 배열로는 해결하기가 어렵고 2차원 배열을 이용해야 한다.
최대한 많은 수의 회의를 하기 위해서는 먼저 회의가 끝나는 시간을 기준으로 정렬을 하고 끝나는 시간이 최솟값인 회의를 초기값으로 시작한다.
백준 평범한 배낭 문제처음에 그리디로 풀 수 있지 않을까 잠깐 고민하다가 DP로 푸는 것이 낫다고 판단했다.
문제를 보고 그리디로 풀 수 있겠다는 생각이 들었다.중간 중간에 조건 잡는 것이 꽤나 까다로웠지만 잘 풀었다고 생각했는데,,90%에서 시간초과가 났다.아마 pair<int, int>를 두 개나 가지고 있는 t배열을 sort하는 과정이 시간 초과의 원인이라 판단했다
그리디 알고리즘을 이용하여 풀 수 있는 문제였다.