본문 바로가기

C51

[SWEA] #2025. 몫과 나머지 출력하기 Difficulty 1 [문제] [코드 및 결과] #include int main(int argc, char** argv) { int T, a, b; scanf("%d", &T); for (int t = 0; t < T; t++) { scanf("%d %d", &a, &b); printf("#%d %d %d\n", t+1, a / b, a % b); } return 0; } [설명] 테스트케이스 T와 연산을 할 a, b를 scanf 함수를 통해 입력받는다. 몫을 출력하기 위해서 나누기 연산자 중에 / 연산자를 사용하고 나머지를 출력하기 위해 % 연산자를 사용한다. 별도의 변수 설정 없이 바로 printf 함수에 a/b, a%b를 넣어서 계산된 값을 출력하도록 해준다. https://swexpertacad.. 2021. 9. 16.
[SWEA] #1945. 간단한 소인수분해 Difficulty 2 [문제] [코드] [설명] scanf 함수로 정수 T, N을 입력 받는다. 소인수가 각각 몇 번 나왔는지 세기 위해 count 배열을 크기 5에 값은 0으로 설정해준다. num 배열에 정수 N을 나눌 수들을 저장하고 반복문 for와 while을 통해 하나씩 나머지가 0이 되는 동안 N을 2, 3, 5, 7, 11로 나눠주고 나눠서 나머지가 0일 경우에 count 값을 1씩 더해준다. 마지막으로 printf 함수로 테스트 케이스 번호와 함께 count 배열에 저장된 수들을 출력해준다. [결과] input에 문제에서 제시된 입력사항을 넣어주면 아래의 결과가 나온다. https://swexpertacademy.com/main/code/problem/problemDetail.do?cont.. 2021. 9. 12.
[SWEA] #2071. 평균값 구하기 Difficulty 1 [문제] [코드] [설명] 필요한 변수들을 정수형으로 선언을 해준 뒤 scanf 함수로 T, N을 입력 받는다. for문을 열고 9번째 줄에서 sum을 0으로 초기화시킨 뒤 그 후에 나오는 for문을 통해 입력받을 N을 sum에 하나씩 더해준다. 평균인 average = sum / 10 이라고 해주었는데, 여기서 / 연산자는 나눴을 때 몫만을 출력하기 때문에 아래에 if문을 추가해서 sum을 10으로 나눴을 때 나온 나머지가 5보다 크면 평균인 average에 1을 더하도록 설정해준다. 이렇게 해서 구한 평균 average를 printf 함수를 통해 테스트케이스와 함께 출력한다. [결과] input에 문제에서 제시된 입력사항을 넣어주면 아래의 결과가 나온다. https://swex.. 2021. 9. 12.
[코딩도장] Unit 64. 함수에서 배열 매개변수 사용하기 1. 배열 매개변수 사용하기 함수에서 배열 매개변수를 사용하려면 형식은 아래와 같다. 반환값자료형 함수이름(자료형 매개변수[ ]) { } 또는 반환값자료형 함수이름(자료형 *매개변수) { } 아래는 위의 내용을 적용한 예시 코드이다. 함수에서 배열 매개변수를 사용할 때 매개변수 이름 뒤에 대괄호만 붙이면 되는데, 이때 대괄호 안에 크기를 지정하더라도 무시된다. 여기서 arr[]은 배열의 메모리 주소를 담고 있는 포인터이고 배열의 실제 크기는 알 수 없으므로 다른 매개변수를 통해 배열의 크기를 받아야 한다. 위의 코드에서 함수 printArray를 사용할 때 요소의 개수를 넣어주었는데, 요소의 개수를 구하는 방법은 17번째 줄처럼 배열의 크기를 자료형의 크기로 나누면 된다. 배열의 크기를 정수로 넣어줘도 .. 2021. 8. 26.
[코딩도장] Unit 62. 함수에서 매개변수 사용하기 1. 함수에서 매개변수 사용하기 함수에서 매개변수를 사용하면 넘겨주는 값에 따라 함수의 반환값이 바뀌게 할 수 있다. 매개변수를 사용하려면 함수를 정의할 때 괄호 안에 자료형과 변수 이름을 지정해주면 된다. 반환값자료형 함수이름(자료형 매개변수) { 코드 } 위의 내용을 이용한 코드를 살펴보자. 이처럼 함수를 정의할 때 괄호 안에 int num1처럼 자료형과 매개변수를 지정해주면, 함수를 호출할 때 넣은 값이 매개변수에 저장된다. 함수에서 매개변수가 어떻게 전해지는지 그림으로 나타내면 아래와 같다. 2. 함수에서 매개변수 여러 개 사용하기 함수에서 매개변수를 여러 개 사용하려면 각 매개변수를 콤마(,)로 구분해줘야 한다. 반환값자료형 함수이름(자료형 매개변수1, 자료형 매개변수2) { 코드 } 위의 코드.. 2021. 8. 22.
[코딩도장] Unit 49. 구조체 포인터 사용하기 1. 구조체 포인터 사용하기 구조체는 멤버 변수가 여러 개 들어있어서 크기가 큰 편이다. 따라서 구조체 변수를 하나하나 선언해서 사용하는 것보다 포인터에 메모리를 할당해서 사용하는 것이 더 효율적이다. 함수를 만들어서 구조체를 사용할 때 포인터를 자주 활용한다. 2. 구조체 포인터를 선언하고 메모리 할당하기 다른 자료형과 마찬가지로 구조체도 포인터를 선언할 수 있다. 구조체 포인터에서도 동적 메모리를 할당할 때 malloc 함수를 사용한다. 구조체 포인터 선언 형식은 아래와 같다. struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름)); 구조체 포인터를 선언할 때 struct 키워드와 구조체 이름을 사용하고 포인터 변수이므로 *를 꼭 붙여준다. 메모리 할당 시 size.. 2021. 8. 15.
[코딩도장] Unit 48. 구조체 사용하기 1. 구조체 사용하기 프로그램을 만들다 보면 변수 한두 개로는 처리하기 복잡하고 비효율적인 상황이 발생한다. 이런 상황에서, 관련 정보를 하나의 의미로 묶어 자료를 체계적으로 관리하기 위해서 구조체를 사용할 수 있다. 구조체는 struct로 정의한다. 아래는 인적 정보를 표현한 구조체이며, struct Person은 Person 구조체를 정의한다는 뜻이다. struct Person { char name[20]; / int age; char address[100]; }; 2. 구조체를 만들고 사용하기 구조체는 위에서 말했듯이 struct로 정의한다. struct 구조체이름 { 자료형 멤버이름; }; 구조체는 정의만 해서는 사용할 수 없기 때문에 변수로 선언해서 사용해야 한다. struct 구조체이름 변수이.. 2021. 8. 7.
[코딩도장] Unit 60. 함수 사용하기 1. Hello, world! 출력 함수 만들기 프로그래밍 할 때 값만 바뀌고 코드는 반복되는 경우가 많다. 이때, 코드가 길어지고 중간에 실수하는 가능성을 줄이기 위해 함수를 사용할 수 있다. 함수는 main 함수 밖에서 작성해야 한다. 반환값자료형 함수이름() { 코드; } 위에서는 반환값의 자료형이 void, 이름은 hello인 함수를 정의하고 printf로 문자열을 출력했다. 여기서 함수의 반환값 부분에 void를 적어주면 함수의 반환값이 없다는 뜻이 된다. 즉, void는 함수의 반환값이 없음을 나타날 때와 포인터로 사용할 때의 의미가 다르다. 아래는 위의 상황에서 함수의 실행 순서이다. 2. 지역 변수 지역 변수란 함수 안에 선언된 변수를 뜻한다. 지역 변수의 특징은 함수가 끝나면 사라진다는 .. 2021. 8. 1.
[코딩도장] Unit 38. 포인터와 배열 응용하기 1. 포인터와 배열 응용하기 int numArr[10]; 처럼 고정된 크기로 배열 생성 가능하지만 int numArr[size]; 처럼 크기를 동적으로 지정할 수 없다. 따라서 배열의 크기를 동적으로 지정하려면 포인터를 선언하고 메모리를 할당한 뒤 메모리를 배열처럼 사용해야 한다. 2. 포인터에 할당된 메모리를 배열처럼 사용하기 포인터를 배열처럼 사용하려면 포인터에 malloc 함수로 메모리를 할당해주면 된다. 자료형 *포인터이름 = malloc(sizeof(자료형) * 크기); 배열과 메모리가 할당된 포인터는 생성 방법만 다르고 값을 다루는 방법은 같다. *numPtr처럼 포인터를 역참조한 것과 numPtr[0]은 같은 값을 가져온다. *(numPtr + 1)을 역참조한 것과 numPtr[1]도 같은 .. 2021. 7. 24.