본문 바로가기

C Programming/연습 문제22

[C언어 연습문제]강좌 22. Sum of Digits of a Five Digit Number(5자리 숫자 자리 수의 합) 학습(Study) & 목표(Objective) 모듈러 연산자 % 는 나눗셈의 나머지를 반환합니다. 예를 들어 4 % 3 = 1이고, 12 % 12 = 2가 되는 것이죠. 일반 나누기 연산자 / 는 정수에 대해 수행할 때, 잘린 정수 값을 반환합니다. 예를 들어 5 / 3 = 1이 됩니다. 이런 원리로, 10진법에서 숫자의 마지막 숫자를 얻으려면 10을 모듈로 재수로 사용할 수 있습니다. 과제(Task) 5자리 정수가 주어졌을 때, 그 각 숫자의 합을 출력하세요. 입력 형식(Input Format) 단일 5자리 정수 n을 입력받습니다. 제약 조건(Constraints) 10000 2022. 6. 15.
[C언어 연습문제]강좌 21. Boxes through a Tunnel(터널을 통과하는 박스 - 구조체 기본) 학습(Study) & 목표(Objective) 터널을 통해 일부 상자를 운송합니다. 여기서 각 상자는 평행 육면체이고, 길이와 너비, 높이 속성이 주어집니다. 터널의 높이는 41피트이고, 너비는 무한하다고 가정할 수 있습니다. 상자의 높이가 터널의 높이보다 낮은 경우에만 상자를 터널을 통해 운반할 수 있습니다. 과제(Task) 터널의 다른 쪽 끝으로 성공적으로 운반할 수 있는 각 상자의 부피를 찾는 문제입니다. 참고로 상자는 회전할 수 없다고 가정합니다. 입력 형식(Input Format) 첫 번째 줄은 단일 정수 n을 입력받으며, 이 값은 상자의 수를 의미합니다. n행은 각각 단일 공백으로 구분된 length-i, width-i, height-i, 세 개의 정수를 구성됩니다. 각각 i번째 상자의 길이와.. 2020. 6. 7.
[C언어 연습문제]강좌 20. Querying the Document(문자열 분해 - 문단, 문장, 단어 조작) 학습(Study) & 목표(Objective) & 과제(Task) 문서는 문단이 모여서 표현되고, 문단은 문장의 모음으로, 문장은 단어의 모음으로 표현됩니다. 단어는 문자(영어는 소문자와 대문자 알파벳으로 표현이 되지요. 원본 텍스트 문서를 구성요소로 문단, 문장, 단어로 변환하는 과제입니다. 결과를 테스트하기 위한 쿼리는 아래 설명되어 있는 대로, 특정 문단, 문장, 단어를 반환하도록 요청하는 쿼리가 있습니다. 엘리시아는 덩케르크 대학교에서 C 프로그래밍 언어를 공부하고 있는데, 포인터를 사용하여 단어, 문장, 단락 및 문서를 나타내려고 합니다. 표현 방법은 다음과 같이 정의합니다. 단어 : char* 문장 : char** (문장의 단어는 하나의 공백(" ")으로 구분합니다. 마지막 단어는 공백(" ".. 2020. 4. 23.
[C언어 연습문제]강좌 19. Variadic functions in C(가변인자 함수 구현법) 학습(Study) & 목표(Objective) 가변 인자 함수는 함수의 인자 값의 수가 변하는 함수를 의미합니다. C 프로그래밍에서 가변 인자 함수는 개발 중인 프로그램의 유연성 향상에 이바지하고 있습니다. 가변 인자 함수의 선언은 적어도 하나의 이름이 있는 변수의 선언으로 시작하고, 생략 부호를 마지막 인자로 사용합니다. 예를 들어 printf() 함수가 있습니다.int printf(const char* format, ...); 과제(Task) 이 프로그램은 인자값의 합계, 인자값의 최솟값, 인자값의 최댓값을 구하는 3개의 가변 인자 함수 sum(), min(), max() 함수를 구현합니다. 첫 번째 인자로 가변 인자 함수의 인자 개수를 전달하고, 그 뒤에 가변인자가 들어오게 됩니다. 입력 형식(In.. 2019. 5. 17.
[C언어 연습문제]강좌 18. Permutations of Strings(문자열 순열 표시 - next_permutation 직접 구현) 문자열 순열 표시 - next_permutation() 함수 구현 순열에 대한 내용입니다. 순열에 대한 수학적 지식과 알고리즘이 없는 백지상태에서는 해결하기 어려운 문제였던 것 같습니다. 학습(Study) & 목표(Objective) & 과제(Task)문자열은 일반적으로 사전 순으로 정렬됩니다. 사전 순으로 정렬된다는 것은 가장 왼쪽의 글자를 비교해서 순서를 정해 정렬을 하게 된다는 의미입니다. 예를 들면, abd가 abc보다 크다(abc y) z > yyy라고 볼 수 있습니다. gh < ghij와 같이 똑같은 문자에 접두사가 붙어있는 문자가 있으면, 접두사가 없는 문자열이 더 사전적으로.. 2019. 5. 14.
[C언어 연습문제]강좌 17. Sorting Array of Strings(함수포인터 활용) 문자열 배열의 정렬 - 입력된 단어를 정렬해서 출력하기 함수 포인터를 활용해서, flag로 여러 개의 함수를 하나의 함수로 제어하는 방법을 연구해봅시다. 학습(Study) & 목표(Objective) & 과제(Task)주어지 문자열 배열을 사전식 오름차순으로 정렬하는 방법이나 글자 수가 가장 작은 단어 순으로 정렬하는 방법은 비교유형을 나타내는 Flag를 통해 작성할 수 있습니다. 그러나 이렇게 하면, 각각의 정렬함수를 매번 다시 작성해야 하는 단점이 있습니다. 각 쌍의 문자열을 비교하는 함수에 대한 포인터를 받아들이는 정렬함수를 작성하는 방법으로, 각각의 정렬함수를 호출하는 단점을 해결할 수 있습니다. 이렇게 하면 새로운 정렬 방법이 있을 때마다 정렬 함수에 대한 포인터만 받아오게 됩니다. 주어진 문자.. 2019. 5. 6.
[C언어 연습문제]강좌 16. Students Marks Sum(성별로 구분된 학생 점수의 합) 학습(Study) & 목표(Objective) & 과제(Task)정수 배열 marks를 받습니다. marks 점수는 한 학급의 학생 점수를 나타냅니다.교차 요소로, marks0, marks2, marks4는 남학생의 점수를 나타냅니다.유사하게, marks1, marsk3, marks5는 여학생의 점수를 나타냅니다. 배열 이름 marks는 배열의 주소를 기반으로 하는 포인터로 동작합니다. 다시말하면, marks 배열은 메모리에 저장된 marks0의 주소를 포함합니다. 예를 들어, marks = [3, 2, 5]와 marks는 0x7fff9575c05f로 시작하는 메모리에 저장되고, 0x7fff9575c05f는 marks0의 메모리 주소라고 볼 수 있습니다.다음 조건에 맞는 합계를 반환하는 함수 marks_.. 2019. 4. 19.
[C언어 연습문제]강좌 15. Calculate the Nth term(재귀 함수를 활용한 조건 계산) 재귀 함수 학습 - n번째 조건 계산 문제 학습(Study) & 목표(Objective)재귀 함수를 배우는데 도움이 되는 문제를 풀어보겠습니다. 함수 내에서 자신을 호출하는 함수를 재귀함수라고 합니다. C 프로그래밍 언어에서는 재귀함수를 지원합니다. 하지만, 재귀함수를 사용하는 동안에 함수 종료 조건 중 하나는 주의 깊게 정해야 합니다. 안 그러면 무한루프에 빠져 프로그램이 비정상 종료되거나 잘못된 동작을 일으킵니다. 무한루프를 방지하기 위해 if - else 문(또는 유사한 접근)을 사용하면 하나의 분기는 재귀 호출을 하고, 다른 분기는 종료하거나 다른 동작을 할 수 있습니다.void recurse() {...recurse(); // recursive call...} int main(){...recur.. 2019. 4. 9.
[C언어 연습문제]강좌 14. Dynamic Array in C(도서관 책장, 책 페이지 수 쿼리, 조회 프로그램) 동적 배열의 활용 - 도서관 선반과 책 페이지 수 조회 프로그램 작성 학습(Study) & 목표(Objective) & 과제(Task) Snow Howler는 HuskyLand시 중앙 도서관 사서입니다. 그는 다음 형식의 요청을 처리해야 합니다.- 1 x y : x 번째 책장의 끝에 y page의 책을 추가해야 합니다.(유형 1)- 2 x y : x 번째 책장에 y번째 책의 page의 수를 출력해야 합니다. (유형 2)- 3 x : x 번째 책장에 있는 책이 몇 권인지 출력해야 합니다.(유형 3) Snow Howler에게는 교육부에서 투입한 조교 Oshie가 있습니다. Oshie는 경험이 없지만, 유형2와 유형3의 모든 쿼리를 처리할 수 있습니다. Snow Howler는 유형 1의 모든 쿼리를 처리할 수.. 2019. 4. 3.
[C언어 연습문제]강좌 13. Digit Frequency(숫자 빈도수 구하기) 학습(Study) & 목표(Objective) & 과제(Task) 주어진 문장 s는 알파벳과 숫자가 포함된 문장입니다. 주어진 문장 안에 각 숫자의 빈도수를 찾는 것이 목표입니다. 입력 형식(Input Format) 첫 번째 줄에 숫자가 포함된 문자열 num을 입력받습니다. 제약 조건(Constraints) 입력된 문자열 num은 1글자 이상이고, 1000글자 이하여야 합니다. 출력 형식(Output Format) 0에서 9까지의 각 숫자의 빈도수를 10개의 공백으로 구분하여, 한 줄에 표시합니다. 입력 예제(Sample Input) - 1 a11472o5t6 출력 예제(Sample Output) - 1 0 2 1 0 1 1 1 1 0 0 0, 3, 8, 9는 나오지 않았기 때문에 0이며, 1은 2번 나.. 2019. 3. 29.
[C언어 연습문제]강좌 12. Printing Tokens(문자열 토큰을 사용한 출력) 학습(Study) & 목표(Objective) & 과제(Task)단어가 포함된 문장 s가 주어지면, 각 단어를 출력하는 것이 목표이자 과제입니다. 입력 형식(Input Format) 문장 s를 첫 줄에 입력받습니다. 제약 조건(Constraints)문장의 길이는 1보다 크거나 같고, 1000자보다는 적거나 같아야 합니다. 출력 형식(Output Format) 새로운 줄 마다 각각의 단어를 표출합니다. 입력 예제(Sample Input) - 1 This is C 주어진 문자열에는 세 단어가 있습니다. {"This", "is", "C"}이 단어를 새로운 줄에 인쇄해야 합니다. 출력 예제(Sample Output) - 1 ThisisC 입력 예제(Sample Input) - 2Learning C is fun .. 2019. 3. 26.
[C언어 연습문제]강좌 11. Array Reversal(배열 반전, 요소 뒤집어 출력) 학습(Study) & 목표(Objective) & 과제(Task)크기 n의 배열을 역순으로 만들어 봅시다.예제배열 arrarr = [1, 2, 3, 4, 5]반전된 배열arr = [5, 4, 3, 2, 1] 입력 형식(Input Format) 첫 줄에 배열의 크기를 나타내는 정수 n이 표시됩니다. (입력)다음 줄에는 n개의 공백으로 구분된 정수 배열의 요소가 표시 됩니다. 제약 조건(Constraints)i는 배열의 요소(index)출력 형식(Output Format) 출력은 배열을 인쇄할 편집기에서 주어진 코드로 출력합니다.주어진 배열을 역순으로 표시하면 됩니다. 입력 예제(Sample Input) - 1 616 13 7 2 1 12 참고 : 배열 arr = [16, 13, 7, 2, 1, 12] 출력.. 2019. 3. 22.