본문 바로가기

IT/BOJ117

백준(BOJ) 14891 톱니바퀴 * # 브루트 포스 리얼 시뮬레이션의 최고봉.. 어렵지는 않으나 구현이 뽁잡하다.. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103#include #include #include #include #include #include #include #include #include #define MAX 105#define INF 2123456789 using namespace std;typedef long .. 2019. 3. 25.
백준(BOJ) 14890 경사로 ** # 시뮬레이션 코드 구현이 조금 길었을 뿐, 실수만 하지 않는다면 어렵지는 않다. # 풀이 1. 우선 입력을 같은 높이 끼리 묶어준다. { 높이, 연속 된 갯수 }ex ) 3 3 2 2 1 1 1 -> {3,2} {2,2} {1,3}으로 변환 2. 앞에 높이와 비교하면서 높이 1이아니거나 낮은 높이가 L보다 작으면 못 가는 길ex1 ) {3,3} {1,3} -> 높이 차이가 1이 아닌 경우ex2 ) L=2 일 때, {3,3} {2,1} or {2,1} {3,3} -> 낮은 쪽이 L보다 작은 경우 (순서 상관 x)ex3 ) L=2 일 때, {3,3} {2,2} {3,3} -> 낮은 쪽의 갯수를 L씩 빼준다.{3,3} {2,2} {3,3} (가능)-> {3,3} {2,0} {3,3} (불가능) 1234567.. 2019. 3. 22.
백준(BOJ) 14889 스타트와 링크 * # DFS # 브루트 포스 n이 작아서 완전 탐색으로 모든 경우 훑어도 됩니다. #include #include #include #include #include #include #include #include #include #define MAX 55 #define INF 2123456789 using namespace std; typedef long long ll; int n,mi=INF,val[MAX][MAX]; bool a[MAX]; // dfs를 이용하여 팀의 조합을 탐색한다. void dfs(int cur,int cnt){ if(cnt==n/2) { int suma=0,sumb=0; // 팀이 완성되었을때 a팀과 b팀의 합을 구해 차이를 구해준다. for(int i=1;i 2019. 3. 22.
백준(BOJ) 14888 연산자 끼워넣기 * # 브루트 포스 # DFS 모든 경우를 보아도 4^10으로 시간 안에 해결 할 수 있습니다. 실수만 안하면 쉽게 풀 수 있을듯합니다! #include #include #include #include #include #include #include #include #include #define MAX 55 #define INF 2123456789 using namespace std; typedef long long ll; int n,m,op[4],mi=INF,mx=-INF; vector v; // 백트래킹 이용한 재귀함수 // 전역변수로 쉽게 해결 void fun(int pre,int times) { if(times==n) { mi=min(mi,pre); mx=max(mx,pre); return ; } f.. 2019. 3. 21.