728x90

문제1. (함수 작성+포인터) swap 함수 만들기 (Call by Reference) -코드업-

codeup.kr/problem.php?id=1581

 

(함수 작성+포인터) swap 함수 만들기 (Call by Reference)

$2$개의 정수 $a$, $b$가 공백으로 분리되어 입력된다.($-1,000,000 <= a, b <= 1,000,000$)

codeup.kr

#include <stdio.h>
// 이 부분에 들어가야 될 코드를 작성하여 제출
main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    myswap(&a, &b);
    printf("%d %d", a, b);
}

- 중요 키워드는 포인터 a와 b에 비교 인것 같다.

- swap에 대한 사용 방법인거 같다.

 

우선 swap를 찾아보았다.

참고한 사이트는 blog.naver.com/PostView.nhn?blogId=lyw94k&logNo=220847883516&proxyReferer=https:%2F%2Fwww.google.com%2F

 

swap를 사용해 비교만 하면 문제를 해결할 수 있다.

코드는

- swap 방식을 사용해서 풀었다. 

- 정수형 포인터 a와 b를 조건식 에서 (*a > *b)일때 swap하는 코드를 짜보았다.

 


 

문제2. (포인터) 부분 문자열 -코드업-

codeup.kr/problem.php?id=1810

 

(포인터) 부분 문자열

어떤 문자열에서 부분문자열을 추출하여 출력하는 프로그램을 작성하시오. 단 배열 대신 동적메모리 할당방법을 사용하시오. 이 문제는 배열을 이용하여 풀 수 없습니다. 포인터(*)를 사용하시

codeup.kr

- 문자열을 입력 받는다. char 문자열로 100자 미만을 주면 될거 같다.

- 만약 abcdefg를 첫번째 입력으로 하고, 두 번째 입력으로 1 3을 할경우 어떻게 문자열이 입력 받은 정수로 구분 해서 출력할지 고민해봐야 겠다.

 

코드를 짜보았다.


 

문제3. 35.7 심사문제: 두 정수의 합 구하기 -코딩도장 심사문제-

dojang.io/mod/quiz/view.php?id=283

- malloc을 사용해서 동적 할당을 해주면되는 문제인거 같다.

 

코드를 짜보자.

- 빈칸에 들어갈 코드는 정수형 포인터를 메모리에 동적 선언하는 것이다.

 


 

문제 4. 동적 메모리 할당을 사용하여 숫자를 입력 받아 합산하기 - Do it C언어 문제 -

 

조건

- 사용자가 입력한 개수만큼 정수를 저장할 수 있는 메모리 할당, 

- 중간에 9999를 누르면 종료함

 

#include <stdio.h>
#include <stdlib.h>

voin main()
{

    int *pNum, count = 0, sum = 0, li = 0, i; // 정수형 포인트 변수와 합을 구할 변수를 선언
    
    printf("할당 최대 개수를 입력 : ");
    
    scanf("%d", &li);
    
    pnum = (int *)malloc(sizeof(int)*li);
    
    while(count < li) {
    	printf("(9999를 입력하면 종료) 숫자를 입력하세요. : ");
        scanf("%d", pNum + count);
        if(*(pNum + count) == 9999) break;  // 9999에서 멈춤
        count++; // 입력한 횟수 계산
}

for(i = 0; i < count; i++) {
	if(i > 0) printf(" + ");  // +(플러스) 문자를 출력
    printf("%d, *(pNum + i));  // 입력한 숫자 출력
    sum = sum + *(pNum + i); // 입력 숫자 합산
}
printf(" = %d\n", sum);  // 변수 합산 출력
free(pNum);  //메모리 할당 해제
}
728x90

'프로그래밍 > C 문제 100' 카테고리의 다른 글

문제2. 3 6 9 게임의 왕이 되자!  (0) 2021.02.28
문제1 . 주사위를 2개 던지면?  (0) 2021.02.28
728x90

3 6 9 게임을 하면서 진짜 못하는 사람들이 있다.

 

이런 사람들을 위해서

문제가 출제 된거 같다..

3 6 9 게임을 하던 영일이는 3 6 9 게임에서 잦은 실수로 계속해서 벌칙을 받게 되었다.
3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자.

참고
중첩의 원리
반복 실행 구조 안에 선택 실행 구조를 자유롭게 중첩할 수 있다.

3과 6과 9가 나온경우 X를 출력하는 문제이다.

 

중첩을 사용하면 쉽게 문제를 해결할 수 있다. 코드로 보자

 

- 정수형 n을 입력받아

- for 반복문에서 i에 값을 1로 초기화해주고 i가 입력받은 n의 값보다 작거나 같다면

- if 조건문으로 넘어가서 반복문 i값이 1인데 3또는 6또는 9와 같은지 조건으로 거른다 같지 않다면

- else printf로 i값을 출력해준다.

- 만약 n 입력을 3으로 출력할 경우 i가 3이 되고 4가 되기전까지 반복한다. i가 3인경우 if 조건문에서 3과 같기 때문에 

- 같을 경우  X를 출력하여 1 2 X를 출력하게 된다.

 

단순하지만 생각을 할 수 있는 문제라서 재미있게 느껴졌다. 

728x90

'프로그래밍 > C 문제 100' 카테고리의 다른 글

3주차. 포인터 1~5문제 Write-up  (0) 2021.03.08
문제1 . 주사위를 2개 던지면?  (0) 2021.02.28
728x90

멀고 험난했다. 

 

쓸데 없는 말은 삼가하고 문제를 풀어보자

 

난 어떤 언어든 주사위 문제를 좋아한다.

 

주사위라는 실제 물건을 보았기 때문인지 아마도 더 생각하는데 도움이되는거 같기도 하다.

 

일단 문제 해석을 해보자

 

문제를 보고도 어떤 목적에 문제인지 이해를 못하면 끝이다 끝.

 

문제1. 주사위를 2개 던지면?

1부터 n까지, 1부터 m까지 숫자가 적힌
서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.

참고
중첩의 원리...
반복 실행 구조도 조건 실행 구조와 마찬가지로 중첩의 원리가 적용된다.
반복 실행 구조를 중첩하면 원하는 반복 구조를 다양하게 만들어 낼 수 있다.

숫자를 n과 m으로 입력받아 주사위에 최대값이 라고 하고 1부터 입력받은 최대값 주사위를 굴렸을때 나올 수 있는 경우의 수를 모두 출력하면 된다.

 

어렵게 생각하지말자 단순하다 내가 3과 4라는 숫자를 입력했을때 

 

결과로

 

1 1

1 2

1 3

1 4

2 1

2 2

2 3

2 4

3 1

3 2

3 3

3 4

 

이라는 숫자가 출력되면 끝이다.

 

그런데 친절하게도 어떤 원리를 이용하면 되는지?

 

- 중첩의 원리

 

라고 나와있다. 중첩의 원리는 주로 조건문에서 자주 등장하는데 반복문으로 사용할 수 있다.

 

일단 짜본 코드를 보자

 

- 정수형 n과 m을 만들어주고

- n과 m은 scanf를 사용해 입력받는 변수로 사용한다.

- 예시에서 나온거 처럼 반복 실행 구조를 중첩하여 사용하면 되는데

- 첫번째 반복구조에서 i를 1로 초기화, i가 n보다 작거나 같은지, 작거나 같다면 i 값에 코드 마지막에 1을 추가한다.

- 두번째 반복구조에서 j를 1로 초기화, j가 n보다 작거나 같은지, 작거나 같다면 j 값에 코드 마지막에 1을 추가한다.

- 그리고 그 i와 j에 값을 출력한다.

 

쉽게 설명하면 우리가 2와3을 입력하면 첫번째 반복구조에서 i가 1인데 입력값(n) 2보다 작기때문에 두번째 반복구조로 넘어간다. 두번째 반복구조에서도 j가 1인데 입력값(m) 3보다 작기때문에 출력으로 간다.

 

그렇기 때문에 i와 j를 출력할 경우 1, 1이 출력되고, j값이 1이 추가된 2로써 다시 두번째 반복문을 거져 1, 2가 출력된다. 1, 3까지는 출력이 조건상 같기 때문에 출력되지만 j값이 4가 된다면 조건보다 크기 때문에 다시 첫번째 반복문으로 돌아간다. 그리하여 i값은 1이 추가된 2로 진행한다. 이러한 반복으로 첫번째 반복문이 끝나면 모든 조건은 끝이나게 된다.

728x90

'프로그래밍 > C 문제 100' 카테고리의 다른 글

3주차. 포인터 1~5문제 Write-up  (0) 2021.03.08
문제2. 3 6 9 게임의 왕이 되자!  (0) 2021.02.28

+ Recent posts