본문 바로가기

분류 전체보기78

[BOJ 9095] 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 www.acmicpc.net 1, 2, 3의 경우만 생각하여 풀면 된다. 4는 3 + [1], 2 + [2], 1 + [3] ([n]은 n을 만들 수 있는.. 2020. 1. 2.
[BOJ 2163] 초콜릿 자르기 https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿을 친구들과 나눠 먹기로 했다. 이를 위해서 정화는 초콜릿을 계속 쪼개서 총 N×M개의 조각으로 쪼개려고 한다. 초콜릿을 쪼갤 때에는 초콜릿 조각을 하나 들고, 적당한 위치에서 초콜릿을 쪼갠다. 초콜릿을 쪼갤 때에는 금이 가 있는 위치에서만 쪼갤 수 있다. 이와 www.acmicpc.net N을 세로, M을 가로로 보았을 때 세로를 N-1번 잘라서 N개의 1 X M의 초콜릿을 얻고 1 X M을 M-1번 잘라서 1 X 1의.. 2020. 1. 2.
[BOJ 1788] 피보나치 수의 확장 https://www.acmicpc.net/problem/1788 1788번: 피보나치 수의 확장 첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 피보나치 수 F(n)에서 n이 음수의 경우에도 값을 구하는 문제이다. -1부터 F(n)을 구하다 보면 값의 절대값이 대칭이 되는 것을 볼 수 있다. F(n)이 음수인지, 양수인지, 0인지를 구하고 F(|n|)을 구하면 된다. #include unsigned long long F[1000001] = { 0 ,1 }; int main() { int n; scanf("%d.. 2020. 1. 1.
[BOJ 2407] 조합 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 조합은 nCm = n-1Cm + n-1Cm-1 와 같은 특성을 가지고 있다. 이를 이용하여 nCm을 구할 수 있다. 하지만 n, m의 범위가 5 ~ 100이므로 unsigned long long로 배열을 구성해도 오버플로우가 발생한다. 이를 막기 위해서는 string을 이용하여 계산을 하거나, 자리수를 나누어 계산할 수 있다. 아래의 코드는 대략 앞 17자리, 뒤 17자리의 수를 저장할 구조체를 만들어 풀었다. #include #include const unsigned long long max = 1e17; ty.. 2020. 1. 1.
[BOJ 3054] 피터팬 프레임 https://www.acmicpc.net/problem/3054 3054번: 피터팬 프레임 문제 "피터팬 프레임"은 단어를 다이아몬드 형태로 장식하는 것이다. 알파벳 X를 피터팬 프레임으로 장식하면 다음과 같다. ..#.. .#.#. #.X.# .#.#. ..#.. "웬디 프레임"은 피터팬 프레임과 유사하지만, 다이아몬드를 '*'로 만드는 것이다. 알파벳 X를 웬디 프레임으로 장식하면 다음과 같다. ..*.. .*.*. *.X.* .*.*. ..*.. 단어가 주어졌을 때, 3의 배수 위치(세 번째, 여섯 번째, 아홉번째, ...)에 있는 알파 www.acmicpc.net "피터팬 프레임"은 '#'을 다이아몬드로, "웬디 프레임"은 '*"을 다이아몬드로 출력하는 모양이다. 두 모양 다 다이아몬드를 출력하.. 2019. 12. 30.
[BOJ 2960] 에라토스테네스의 체 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 www.acmicpc.net 2960번 문제는 2 ~ N까지의 수를 에라토스테네스의 체를 이용하여 지울 때 K번째 지워진 수를 찾는 문제이다. 간단하게 수.. 2019. 12. 30.
[C++] 함수와 const 목차 함수의 매개변수에 const 함수의 반환값에 const 함수명 뒤에 const 1. 함수의 매개변수에 const class CMyClass { public: CMyClass(); ~CMyClass(); private: int m_iPosX; int m_iPosY; public: void SetPos(const int iPosX, const int iPosY) { //iPosX = -1; // 오류 발생 m_iPosX = iPosX; m_iPosY = iPosY; } }; 함수의 매개변수에 const를 붙이면 매개변수의 값을 변경할 수 없다. 즉, const 예약어가 가지는 기능을 매개변수에 적용시키는 것이다. 매개변수가 변경되면 안되는 경우에 사용된다. 2. 함수의 반환값에 const const i.. 2019. 12. 30.
[정렬] 버블 정렬 (Bubble Sort) 소개 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘이다. 다른 정렬 알고리즘에 비해 느린 편이지만, 코드가 간단하다. 정렬 과정 첫 번째 탐색 1. 5와 3을 비교 2. 앞에 있는 5가 더 크므로 5와 3의 위치를 바꾼다. 3. 5와 1을 비교 4. 앞에 있는 5가 더 크므로 5와 1의 위치를 바꾼다. 5. 5와 9를 비교 6. 뒤에 있는 9가 더 크므로 위치를 변경하지 않는다. 7. 9와 7을 비교 8. 앞에 있는 9가 더 크므로 9와 7의 위치를 바꾼다. 9. 첫 번째 순회가 끝난 배열 첫 번째 탐색의 과정을 보면 가장 큰 수가 맨 뒤로 이동하게 된다. 즉, 매 순회마다 정렬된 수를 제외한 가장 큰 수가 맨 뒤로 가 뒤에서부터 정렬이 된다. 그러므로 맨 순회마다 배열의 전체를 탐색할 필요 없이 정.. 2019. 11. 21.
[C/C++] free (stdlib.h에 선언되어 있음.) free(포인터); void memcmp(void* ptr); 할당한 메모리의 주소 반환 메모리를 해제한다 이전에 malloc 혹은 calloc, realloc 등으로 할당된 메모리를 해제해서, 나중에 다시 사용될 수 있게 합니다. 인자 ptr 기존에 malloc, callor, realloc 으로 할당된 메모리의 시작점을 가리키는 포인터 리턴값 없음 예시1 #include #include int main() { char* buffer; buffer = (char*)malloc(sizeof(char) * 10); if (buffer == NULL) return 0; for (int i = 0; i < 9; i++) *(buffer + i) = 'A' + rand() .. 2019. 11. 7.