목록C++ (53)
have to do_yeon

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정렬해야 한다는 말을 보고 바로 sort를 떠올렸다. 따로 함수를 만들어 sort의 세번째 인자로 넣게 되면, 세번째 인자의 조건에 따라 정렬한다고 예전에 공부한 적이 있었다. 따라서 comp() 비교함수를 만들어 세번째 인자로 넣어주었다. 참고 >> https://blog.naver.com/ndb796/221227975229 또한 comp() 비교함수를 만들 때 return 반환값에 ..
C와 C++ 우리는 C에서 입출력 함수로 printf, scanf, fgets, putchar 등을 사용하였다. 그리고 C++로 넘어오면서 헤더함수 iostream을 사용하기 시작했고, cin, cout와 같은 입출력 함수를 이용하였다. 그러나, cin과 cout와 같은 입출력 함수의 속도는, C에서 사용하던 것의 속도에 비하면 현저히 느리다. 알고리즘 문제 풀이같은 경우 시간제한이 있고, 빠르면 빠를수록 좋기 때문에 우리는 입출력 속도에 신경을 쓸 필요가 있다. cin.tie(NULL); cout.tie(NULL); cin과 cout의 연결을 끊어주는 함수이다. cin은 기본적으로 cout에 종속되어 있는데, 메인함수 최상단에 위 문구를 추가해 줌으로써 각각을 분리해 주게 된다. ios::sync_wi..

https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 위 문제에서 말하는 이항계수는 조합 nCk를 말한다. 이므로 팩토리얼을 계산하는 함수를 따로 설정하여 숫자를 받으면 그 수에 대해 팩토리얼 함수를 지정하면 해결할 수 있다. 제출 답안 #include using namespace std; int fact(int x){ int fac = 1; for(int i = x; i >=1; i--){ fac = fac * i; } return fac; } int main(void){ int N, K, result; cin>> N >>..

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 처음에는 저장을 한 후에, 오름차순으로 정렬하고 그것을 출력하는 방식을 사용했다. 그랬더니 메모리 초과가 떴다. 그래서 생각한 방법이, 숫자를 받고 바로 카운팅 하는 방법이었다. (처음에는 N으로 전부 해결할 수 있지 않을까 했는데, 그냥... 그냥 했다. 나중에 다시 풀어보아야겠다.) 숫자를 받고, 숫자에 따른 배열 순서에 +1을 해줬다. 그런데 이것을 출력하려고 보니 시간초과가 떴다. 입출력의 수가 많을 때는(시..

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 처음에 직접 최대공약수를 구하는 코드를 만들었는데, 너무 길고, 오래걸리고, 보기 좋지 않아서 알고리즘 분류에 '유클리드 호제법' 이라고 적혀 있길래 유클리드 호제법에 대해서 찾아보았다. 유클리드 호제법(=유클리드 알고리즘) 은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나입니다. 쉽게 설명하자면, 1. 큰수를 작은 수로 나눕니다. 2. 나누는 수를 나머지로 계속 나눕니다. 3. 나머지가 0이 나올 때까지 반복합니다. 4. 나머지가 0이 나온다면 ..

https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 정수 / 2 를 하면, 소숫점 이하의 수는 버린다는 것을 떠올리자. 입력한 숫자의 자릿수가 홀수라면 가운데 자리의 숫자는 비교하지 않으므로 반복문에 활용할 수 있다. 가운데 자리의 숫자를 대칭축으로 하여 비교하고, 다르다면 'no' 를 출력하게 한다. 'yes' 를 출력하는 경우는 조건을 새롭게 정해줘도 됐지만, 'no' 를 출력할 때와 아닐 때 변수 하나에 값을 다르게 하여 간단하게 구현할 수 있다. 제출 답안..

https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 이 문제를 풀 때 가장 중요한 것은 주어진 식이다. 아무리 출력을 제대로 했다고 해도 수식을 코드로 표현해내지 못하면 50점이 나온다. (통한의 50점 4스택...) 특히 M을 빼놓고 코드를 만드는 실수는 아찔하다. 아스키코드와 주어진 값인 r=31, M=1234567891을 이용하여 수식을 만들면 정답이다. 제출 답안 #include using namespace std; int main(voi..
헤더파일(header) 헤더파일이 필요합니다. C : C++ : // C #include // C++ #include 함수 원형 · [C] : C언어는 함수 오버로딩을 지원하지 않으므로 double 타입으로만 존재합니다. · [C++] : C++에서는 method 이름이 달라도 method를 선언할 수 있는 오버로딩을 지원합니다. double ceil (double x);// C, C++ float ceil (float x);// C++ long double ceil (long double x);// C++ 올림함수 ceil() / 내림함수 floor() result = ceil(4.2); cout https://blockdmask.tistory.com/112