본문 바로가기

알고리즘 관련/BOJ

BOJ)13911 집 구하기 문제: icpc.me/13911 맥세권과 스세권을 만족하는 집 중 최단거리의 합이 최소인 집을 구하면 된다. 맥도날드로 부터 거리를 구하기 위한 다익스트라와 스타벅스로 부터 거리를 구하기 위한 다익스트라를 두번 돌려 준 후 mdp[x]와 sdp[x]가 정해진 거리를 만족하면서(맥세권,스세권이면서) mdp[x]+sdp[x]가 최소인 거리를 출력해주면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576#include #include #include #include #include #define IN.. 더보기
BOJ 5719) 거의 최단 경로 문제: icpc.me/5719 BOJ 5719 다익스트라로 최단경로를 구현하고 최단경로에 포함되는 모든 간선들을 지워준 뒤 다시 다익스트라를 실행하면 된다. 최단경로에 속하는지 여부는 BFS처럼 처음에 queue에 도착지점을 넣어준 뒤 하나씩 빼면서 for(i 0~n-1) dp[here]= dp[i]+dist[i][here]를 만족하는 경우에 dist[i][here]를 지워주고 i를 큐에 삽입하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include #include #include using namespace std;int n, m, x.. 더보기
BOJ 7894) 큰 숫자 문제: icpc.me/7894 BOJ 7894 임의의 숫자 n의 자리수는 ceil(log10(n))으로 결정된다 n!의 자리수는 ceil(log10(n)+log10(n-1)+...+log10(1)) 으로 결정된다. 12345678910111213141516171819202122#include #include #include using namespace std;int t, m;int main() { scanf("%d", &t); while (t--) { scanf("%d", &m); double r = 0.0; for (double i = (double)m; i > 0; i--) { r += log10(i); } if (m == 1) printf("1\n"); else printf("%lld\n", (in.. 더보기