백준 2577번 C/C++
2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net 코드1 #define _CRT_SECURE_NO_WARNINGS #include int num_check[10]; int main() { int a, b, c; int quotient, remainder; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); quotient = a * b * c; for (int i = 0; quotient != 0; i++) { //굳이 remainder에 값을 안넣고 바로 num_check[quotient%10]을 해도 됨. remainder..
2021.01.03
백준 1157번 C/C++
1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드1 #define _CRT_SECURE_NO_WARNINGS #include //#include #include char str[1000000]; int check[26]; int main() { int loop = 0; int max = 0; int count = 0; int location = 0; scanf("%s", str); //_strupr(str); // 소문자를 대문자로 변경 while (str[loop] != NULL) { str[loop] = toupper(str[loop]..
2020.12.31
백준 1546번 C/C++
1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int grade[1000]; int loop; float temp = 0; float sum = 0; int max = 0; scanf("%d", &loop); //입력 for (int i = 0; i < loop; i++) { scanf("%d", &grade[i]); //최댓값 판별 if (max < grade[i]) { max = grade[i]; } }..
2020.12.30
백준 1152번 C/C++
1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include char str[1000000]; int main() { char space = ' '; int count = 1; int i = 0; scanf("%[^\n]s", str); //공백 포함하여 문자열을 받음. while (str[i] != NULL) //문자열의 끝까지 반복문 수행 { if (str[i] == space && str[i + 1] != NULL) count++; i++;..
2020.12.30
백준 2884번 C/C++
2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 코드1 #define _CRT_SECURE_NO_WARNINGS #include int main() { int hour, min, temp; scanf("%d %d", &hour, &min); temp = min - 45; if (temp < 0 && 0 != hour) { hour -= 1; min = 60 + temp; //temp가 -이기에 +연산자 사용. } else if(temp < 0 && 0 == hour) { hour = 23; min = 60 + temp..
2020.12.30
no image
재귀함수에 대하여<1>
왜 포스팅을 하게 되었는가? 사실 재귀함수라는 부분이 개인적으로 정말 와닿지 않는 부분이었는데, 결국 익숙해지려면 여러 코드를 보고 익히는 것이 최고라고 생각했습니다. 그래서 인프런의 영리한 프로그래밍을 위한 알고리즘 강좌의 코드를 C로 재작성했습니다. 영리한 프로그래밍을 위한 알고리즘 강좌 - 인프런 영리하게 프로그래밍을 할 수 있기 위한 기본 소양인 '알고리즘' 을 배우고 응용하는 방법을 배웁니다. 초급 알고리즘 알고리즘 온라인 강의 프로그래밍을 위한 알고리즘 강좌 www.inflearn.com 재귀함수 간단히 말해서 재귀함수란 자기 자신을 호출하는 함수이다. void foo() { ... foo(); ... } 위 코드처럼 자기 자신을 호출하는 꼴을 가진 함수를 재귀함수라고 할 수 있다. 생김새로는..
2020.12.02
[백준 2751번] C/C++
2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include #include #include using namespace std; int main() { int n; vector ivec; cin >> n; for (int i = 0; i > temp; ivec.push_back(temp); } sort(ivec.begin(), ivec.end()); for (int i = 0; i < n; i++) { printf("%d\n", ivec[i])..
2020.10.08
no image
백준 10828번 스택 C/C++
10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net 라이브러리를 사용한 코드 #include #include #include using namespace std; int main() { int n, value; string oper; stack stk; cin >> n; for (int i = 0; i > oper; if (oper == "push") { cin >> value; stk.push(value); } else if (oper == "pop") { if..
2020.09.14
백준 2609번 C/C++
2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 최대공약수와 최소공배수 문제를 보았을 때, 내가 알던 식으로 소인수분해를 하며 풀면 안될 것 같다는 생각이 들었다. 그래서 찾아보게 된 것이 유클리드 호제법이다. 유클리드 호제법 유클리드 호제법을 통해 최대공약수를 구할 수 있는데, 이것에 대한 설명은 다음과 같다. 숫자가 a와 b가 있고, a를 b로 나눈 나머지를 r이라고 한다. (여기서 a ≥ b이고, r은 0≤ r < b인 정수) a와 b의 최대 공약수를 (a,b)라고 하면, 다음이 성립한다. (a, b) = (b, r) 예시로 1071과 1029에 대한 예시를 위와 같은 ..
2020.08.20