목록분류 전체보기 (68)
개인공부용123 프로그래밍 블로그
문제 : https://algospot.com/judge/problem/read/POTION 마법의 약을 만드는데 넣어야할 재료의 최소량을 구하는 문제입니다. 유클리드알고리즘을 이용해서 마법의 약을 만드는데 필요한 재료들의 최소공배수를 찾은후 가지고있는 모든 재료들중 가장 높은 비율로 나머지 재료들을 맞춰야합니다. 이떄 이 비율의 분모는 최소공배수여야합니다 왜냐하면 맞춰진 재료들이 정수여야하기때문입니다. #include #include using namespace std; int n; // 재료의수 int recipe[200]; int cur[200]; int answer[200]; int gcd(int a, int b) { if (a < b) swap(a, b); return b == 0 ? a : g..
문제 : https://algospot.com/judge/problem/read/RATIO 플레이한 횟수 N, 승리 횟수 M 일떄 몇연승을 했을경우 승리율을 높일수있는지 찾는 문제이다 (승리율은 승리횟수 / 플레이한 횟수를 한 정수이다) 연승한 횟수 + 승리 횟수 / 연승한 횟수 + 플레이한 횟수 와 승리 횟수 / 플레이한 횟수를 비교해서 이분법을 사용해서 답을 찾으면 됩니다. (문제를 풀때 decision함수의 인자로 long long을 사용하지않으면 범위를 초과해서 결과가 나오지않습니다.) #include using namespace std; #define MAX_SWIN 2000000000 long N, M; // 플레이횟수, 승리횟수 int decision(long long s_win, long ..
AppcompatActivity에서 타이틀바를 제거하려고했는데 requestWindowFeature(Window.FEATURE_NO_TITLE)를 코드상에 적용해서 타이틀바를 없애려했는데 제대로 작동하지않습니다. AppcompatActivity에서 타이틀바를 제거하려면 위와 같이 android:theme="@style/AppTheme"> 부분을 ctrl + 좌클릭합니다. style.xml에 위와 같이 xml코드를 추가해줍니다. 그러면 titlebar가 제가됩니다. 위와 같이 타이틀바가 제거됩니다.
버튼을 이용해서 팝업메뉴를 호출하는 예제입니다. getMenuInflater().inflate(R.menu.option_menu, popup.getMenu())를 사용해서 리소스의 메뉴를 실제메뉴로 전개했습니다. res > menu > option_menu.xml 내에 있는 메뉴 xml입니다. public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_..
문제 : https://algospot.com/judge/problem/read/LOAN 갚을 금액 N, 연이율 P, M개월동안 C원을 갚는다했을경우 한달에 최소 얼마를 갚아야하는지 구하는 문제입니다. 이문제는 이분법으로 접근해서 풀었습니다. (식으로도 풀수있습니다.) *이분법으로 접근했을경우 setprecision(10)을 사용하지 않을경우 오차가 10^-7을 넘기때문에 오답처리가됩니다. #include #include using namespace std; double N, P; // 갚을 금액, 이자율 int M; //몇달동안 bool if_possible(double Monthly_payment) { double Money = N; const double interest = P / 1200.0; f..
문제 : https://algospot.com/judge/problem/read/CANADATRIP N개의 도시가 있는데 도시 M[i]미터 전부터 표지판이 세워지고 G[i]미터 간격으로 표지판이 세워진다. 이때 K번째 표지판의 위치를 구하는 문제이다. 이 문제또한 결정문제로 바꿔서 풀경우 빠르게 풀수 있습니다. 이분법을 이용해서 K개 이상의 표지판을 포함하는 거리를 좁혀나가면서 K개의 표지판을 포함하는 거리를 찾았습니다. #include #include #include using namespace std; int N, K; int L[5000], M[5000], G[5000]; // 시작점부터 도시의 거리, (표지판이)몇미터부터, (표지판이)몇미터 간격 bool decision(int dist) { in..
문제 : https://algospot.com/judge/problem/read/ARCTIC 동일한 성능을 가진 무전기로 모든 기지에 연락할떄 무전기 성능을 최소화하는 문제입니다. 이분법과 프림알고리즘 두가지 방법을 이용해서 풀었습니다. 두 기지사이의 거리정보를 미리 계산해서 배열에 넣은후 이분법에서는 queue를 이용해서 인자로 넣어진값으로 모든 기지에 연락할수있으면 true를 반환하고 아닐시 false를 반환하면서 점점 최적값으로 맞춰갔고프림알고리즘은 priority_queue를 이용해서 값을 계산했습니다. 100번 반복문을 실행하는이유는 절대오차가 10^-7보다 작게하기위해서입니다. #include #include #include #include #include #include #include us..
문제 : https://algospot.com/judge/problem/read/DARPA 카메라를 설치할때 가장 가까운 두카메라의 간격을 최대화 하는 문제입니다. 이분법과 그리디알고리즘을 이용해서 풀었습니다. 100번 반복문을 실행하는이유는 절대오차가 10^-7보다 작게하기위해서입니다. #include #include #include using namespace std; int N, M; // 카메라수 중계소수 vector loc; bool decision(double gap) { int install = 0; double min_limit = -1; for (int i = 0; i < loc.size(); ++i) { if (min_limit = N; } double optimize() { doubl..
문제 : https://algospot.com/judge/problem/read/ALLERGY 사람마다 먹을 수있는 음식이 있는데 최소한의 음식만 준비해서 모든 사람이 음식을 먹을수있게 하는 문제입니다. 이 문제를 해결할때 불필요한 낭비를 하지않기위해 음식을 못먹은 사람을 찾고 그 사람이 먹을 수있는 음식을 대입해가면서 최소로 준비할수있는 음식의 수를 찾는 방법을 이용했습니다. 간단한 가지치기로 현재까지 찾은 최저값보다 클 경우는 재귀를 더이상 수행하지 않게 처리했습니다. #include #include #include #include using namespace std; int n, m; // 친구 음식 int best; // 가장 좋은경우 vector foods[50]; // 음식을 먹을수있는 사람이..
문제 : https://algospot.com/judge/problem/read/QUADTREE 문자열을 입력받았을떄 이 문자를 상하로 뒤집은 문자열을 출력하는 문제입니다. 분할 정복을 이용해서 문제를 풀었습니다. *string의 begin함수는 r-value이므로 함수의 인자에 r-value를 넣으면 알고스팟 컴파일러에서 에러가 나왔습니다. 그러므로 다음 코드와 같이 l-value로 지정을 해준후 인자로 넣어주면 제대로 컴파일이 됩니다. r-value와 l-value 참조 : http://blog.mimu.me/understand-rvalue-reference-ko.html #include #include using namespace std; string str; // 1 2 // 3 4 이형태로 만듬..