본문 바로가기

Programming

<코드업> 2001 : 최소 대금 #include using namespace std; int main() { float a[5]; for (int i = 0; i > a[i]; float tmp = a[0]; float tmp1; for (int i = 0; i a[i + 1]) tmp = a[i + 1]; a[3] > a[4] ? tmp1 = a[4] : tmp1 = a[3]; cout.setf(ios::fixed); cout.precision(1); cout 더보기
[C++] 백준 11047번 : 동전 0 종종 변수 선언을 적게 하기 위해 사용하지 않는 배열의 한 부분에 count 나 maximum 값을 넣어뒀었는데, 속도 차이가 꽤 난다는 것을 알게 되었다(이 단순한 문제에서도 두배 이상 차이가 났다). 문제 자체는 쉽지만 배운점이 있어 글을 남김. #include using namespace std; int main(){ int N, K; cin >> N >> K; int money[11] = { 0 }; int cnt = 0; for (int i = 0; i > money[i]; for (int i = N - 1; i >= 0; i--) while (K >= money[i]) { K -= money[i]; cnt++; } cout 더보기
<코드업> 4713 : 공주님의 정원 필요한 함수들은 금방 떠올랐지만 날짜를 정확하게 맞추는데 꽤나 고생한 문제이다. 처음 문제를 읽으면서 들었던 생각은 각 월의 마지막날 다음날을 어떻게 다음 월의 첫째 날로 생각할 수 있는지에 대한 것이었다. 예를 들어, 1월 31일의 다음날이 2월 1일이고, 2월 28일의 다음날은 3월 1일이라는 것을 어떻게 표현할지에 대한 것이었다. 단순히 31을 기준으로 잡기엔 월마다 마지막 날이 다른것이 문제였다. 해결책으로 매월, 일, 시는 사실 연속적으로 이어지는 단위를 우리가 이해하기 위한 단위로 끊어놓은 것이므로, 월 / 일을 연속된 단위로 바꾸기 위해 flatten 함수를 만들어 해달 월 / 일을 1년의 몇번째 날인지를 반환하도록 하였다. 날짜를 계산하는 과정에서 하루씩 count 하면 무의미한 연산이 많.. 더보기
API Hooking 웹 카테고리의 첫 게시글이 웹보다는 윈도우 프로그래밍에 가까운 개발 노트가 되었다 기술 블로그를 통해 글을 읽다가 API Hooking이란 말이 나와 궁금증에 공부를 하게 되었다. 우선 API는 뭐고 Hooking은 무엇인가 알아보자 API Application Programming Interface, 윈도우 프로그래밍이나 MFC 공부할 때 숱하게 많이 나왔던 용어이다. 정확한 의미를 내것으로 만드는데 시간이 걸리는 용어인것 같다. 두루뭉술한 말이면서 포괄적이기 때문에 명료하게 정의 내리기는 어렵다. 간단하게 말하자면 프로그래머가 개발을 쉽게하기 위한 도구들의 집합이다. 사용자입장에서나 개발자 입장에서나 OS나 응용프로그램을 일일히 코딩하면서 조작하는것은 굉장한 스트레스일 것이다. 이에 인터페이스로써 응.. 더보기
<코드업> 4040 : 펜션 #include #include using namespace std; int cntRoom(string [], int, int); //머물 수 있는 기간 반환 int maxRoom(string [], int, int); //머물 수 있는 날이 가장 긴 방의 인덱스를 반환 int main() { int n, m, s, t; string room[102]; cin >> n >> m; for (int i = 1; i > room[i]; cin >> s >> t; s; t; int stayRoomI = maxRoom(room, s, m); int cnt = 0; for (; s < t; s++){ if (stayRoomI == (m + 1)) { cnt = -1; break; } else if (cntRoom(.. 더보기
<코드업> 3321 : 최고의 피자 #include int getMax(int [], int); //배열중 최대값의 인덱스를 반환 int main(){ int kot[101]; //토핑의 종류 100가지, 101번째는 도우의 칼로리 int a, b, n; scanf("%d %d %d %d", &n, &a, &b, &kot[101]); for(int i=0; i 더보기
<코드업> 3301 : 거스름돈 #include int main() { int money, cnt = 0; scanf_s("%d", &money); while (money >= 50000) { money -= 50000; cnt++; } while (money >= 10000) { money -= 10000; cnt++; } while (money >= 5000) { money -= 5000; cnt++; } while (money >= 1000) { money -= 1000; cnt++; } while (money >= 500) { money -= 500; cnt++; } while (money >= 100) { money -= 100; cnt++; } while (money >= 50) { money -= 50; cnt++; } w.. 더보기
<코드업> 2001 : 최소 대금 #include int getMin(int[], int); //n개의 배열중 최소값을 반환 int main() { int a[3], b[2]; for (int i = 0; i < 3; i++) scanf("%d", &a[i]); for (int i = 0; i < 2; i++) scanf("%d", &b[i]); int pasta = getMin(a, 3); int juice = getMin(b, 2); printf("%.1lf", (pasta + juice) * 1.1); } int getMin(int a[], int n) {//n개의 배열중 최소값을 반환 int min = a[0]; for (int i = 1; i < n; i++) if (a[i] < min) min = a[i]; return min.. 더보기