목록알고리즘 (32)
이우의 개발일지

코드트리 화면에 출력 문제 조건 : 시간제한(1초), 메모리 제한 (80MB) 화면에 출력 풀이1. BFS이 문제를 풀면서 한 가지 간과한 점이 있다. 처음 풀이를 풀 때 재귀함수로 풀이를 시작했으나, 시간초과가 뜨는 에러를 범했다. 재귀함수는 DFS와 똑같이 깊이 우선 탐색이라 한 경로를 끝까지 탐색하고, 목표 상태에 도달하면 그 값을 기록한 후 다른 경로를 탐색하는 방식이기 때문에 빠르게 최적의 값을 탐색할때는 적합하지 않다. 따라서, BFS를 사용하면 가까운 상태부터 탐색하며, 모든 경로를 확장하는 방식인데 이 방식은 최단 경로나 최소 동작 수를 찾을 때 유리한 알고리즘이다. 목표 상태에 처음으로 도달한 순간 항상 최단 경로 또는 최소 동작 수에 해당하기 때문에 목표 상태에 도달하면 바로 종료..

백준 11651번 좌표 정렬하기 문제 이 문제는 간단하게 y좌표를 오림차순으로 정렬하고, 만약 y좌표가 같다면 x좌표의 오름차순으로 정렬하는 문제이다. 간단하게 x,y 를 동시에 받을려면 pair 를 써서 x,y를 한 묶음으로 저장해놓는다. 또한, sort 함수를 쓰는데 이때 x를 따지는 것이 아닌 y를 따지고, y가 같다면 x를 따져야하기 때문에 sort함수에 넣을 조건문을 따로 써준다.bool comp(pair& a, pair& b) { if (a.second == b.second) { return a.first 이런식으로 따로 쓰면 되는데, 자주 나오는 개념이니 까먹지 않는 것이 좋다. 11651번 좌표 정렬하기 C++ 전체 코드 #include #include // syst..

백준 1018번 체스판 다시 칠하기 문제 이 문제는 체스판 같은 N*N 판이나 일반적인 N*M의 표를 공략하는 문제가 있을 때 쓰면 좋을 것 같은 팁이 있다. 위의 표를 보면 B와 W가 번갈아 칠해져야하며, 위 아래 역시 번갈아 칠해져있어야 한다.빨간 색 부분의 숫자를 보면 결국에는 행과 열의 합이 일정하다. 이 말이 무슨 말이냐면 행과 열의 합이 (0,0)이 만약에 B라고 했을 때 행과 열의 합이 항상 짝수일 때는 B가 나온다. 반대로 (0,1)이 W라고 하면 행과 열의 합이 항상 홀수가 나온다. 즉, B와 W처럼 일정한 간격으로 입력해야할 때 행과 열의 합이 짝수인지 홀수 인지 맞춰서 해주면 된다. 체스판 다시칠하기 전체 코드#include using namespace std;char chass[..