목록전체 글 (245)
말랑한 하루
[ 핵심풀이 ] [ 핵심소스 ] [ C++ ] #include #include #include #pragma warning(disable:4996) using namespace std; #define endl "\n" #define MAX 10 bool sheep[MAX]; int main() { int tc; cin >> tc; for (int t = 1; t > temp; while (true) { if (view == 10) break; string sleep = to_string(temp * cnt++); for (int i = 0; i < sleep.length(); i++) { if (!sheep[sleep[i] - '0']) { view++; sheep[sleep[i] - '0'] = tru..
[ 핵심풀이 ] [ 핵심소스 ] [ C++ ] #include #pragma warning(disable:4996) using namespace std; #define endl "\n" int main() { int tc; cin >> tc; for (int t = 1; t > P >> Q >> R >> S >> W; int A = W * P; int B = Q; if (R < W) B += (W - R) * S; cout
[ 핵심풀이 ] [ 핵심소스 ] [ C++ ] #include #include #pragma warning(disable:4996) using namespace std; #define endl "\n" #define tap "\t" int main() { int tc; while (cin >> tc) { queue q; for (int i = 0; i > temp; q.push(temp); } int index = 0; while (!q.empty()) { index == 5 ? index = 1 : index++; int out = q.front(); q.pop(); int in = out - index; if (in
[ 문제 ] 이분탐색을 아무리많이풀어도 해결책이 금방 나오지않는 기분은 정상이다 더 많이풀고 더 고민하여 빠르게 감을익혀 이분탐색의 중심값을 어떻게 판별할지 찾아내는것을 목표로 해야겠다 해당문제에는 파라메트릭 서치(Parametric Search)개념이 추가된다. 위에대해 지식이없다면 링크를통해 살짝 보구오는걸 추천합니당. 더보기 문제 N명의 아이들이 한 줄로 줄을 서서 놀이공원에서 1인승 놀이기구를 기다리고 있다. 이 놀이공원에는 총 M종류의 1인승 놀이기구가 있으며, 1번부터 M번까지 번호가 매겨져 있다. 모든 놀이기구는 각각 운행 시간이 정해져 있어서, 운행 시간이 지나면 탑승하고 있던 아이는 내리게 된다. 놀이 기구가 비어 있으면 현재 줄에서 가장 앞에 서 있는 아이가 빈 놀이기구에 탑승한다. 만..
[ 문제 ] Floyd-Warshall ↑개념을 모른다면 간단하게 익히고 오는것이 좋다! 더보기 플로이드 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 19952 7328 5358 42.574% 문제 n(2 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다. 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 ..
[ 개념 ] 거쳐가는 정점을 기준으로 최단거리 구하기 [ 시간복잡도 ] O(|n|^3) [ 흐름 ] Dynamic Programming의 일종! 현재까지 계산된 최소비용을 나타내는 정점에대한 테이블이 필요함! 이를 나타낼때 Array[y][x] = y->x로 가는 비용으로 나타냅니다. 플로이드와샬은 자기 자신으로 되돌아오는 길이 존재하지않습니다. 그래서 (1) 자기자신으로 되돌아오는 길을 배제할것 (2) 현재위치에서 다른정점을거쳐 현재위치로 올 수 있는 경우와 비교하여 최소값을 가져가면됩니다. 즉, 정점 1, 2, 3이 존재할 때 1->3 의 값과 1->2->3 으로 가는값을 비교하는겁니다 이를 나타내면 Array[1][3] compare Array[1][2] + Array[2][3] 이 됩니다. 위 두..
깃허브만들기 심심해서 둘러둘러보다가 메인화면을 꾸밀 수 있는걸 발견함! 바로여러개참고해서 정리를 시작했다 HTML/CSS비롯해서 JS, Markdown 등등 UI에 대해 무지한편이라 시간이오래걸렸고ㅠ 해당 툴들은 전부 만들어져있어서 쉽게가져다 쓰기만하면된다! 나중에 기회가된다면 다 뜯어서 커스터마이징 해보고도 싶다... 된다면...ㅠ 다음은 만든건데~! 하나하나 짚어갈게요 위 모습이 자신의 Github Overview에 바로보이는 모습입니다. 이를위해 위링크가 기본 가이드에요! 자신의 Git_Name과 똑같은 Repository를 만들어주고, 만들어줄때 Readme 추가해주는거 잊지 말기! Markdown을 베이스로하는 Readme이기 떄문에 많이애를먹어서 참조한 사이트들이 많슴니다ㅠ 여러가지 기능들이 ..
[ 문제 ] 더보기 문제 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 입력 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. [ 조건 및 풀이 ] 이분탐색으로 간단하게 하는방법과, 처음수부터 더해가는 방법이있다. (1) 이분탐색의 경우 Sigma N = N x (N+1) / 2 공식이 필요하다. (2) 처음수부터 더해가는 경우 최대값이 나와야하므로 1부터 더해간다 했을때, 더해가는 값이 입력값보다 커지는경우 최대갯수라 할 수 있다. 더해가던값이 15인데 입력값이 17이라면, 1+2+3+4+5 -> 1+2+3+4+(5->7) 로 변하게되어 최대갯수라 판단할 수 있기 때문. [ 핵심소스코드 / C++ ] ll value = sqrt(i..