반응형

버블정렬이란?

버블정렬은 배열내의 두개의 인접한 Index를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법이다.

말하자면 배열의 뒷쪽부터 정렬하는 방법이라고 생각하면 된다.

 

 

[소스코드]

오름차순 정렬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(void)
{
    int A[5= { 13,2,45,21,50 };
    int tmp;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (A[j] > A[j + 1])
            {
                tmp = A[j];
                A[j] = A[j + 1];
                A[j + 1= tmp;
            }
        }
        printf("%d  ", A[i]);
    }
}
cs

 

 

 

인덱스 0번지와 1번지를 비교해서 0번지가 크다면 temp변수에 1번지 값을 넣어주고, 0번지에 1번지 값을 넣어준다,

그리고 1번지에는 temp변수에 있는 값을 넣어준다.

그 과정을 차례대로 반복한다.

 

 

 

[결과]

 

반응형
반응형

char형 배열에 문자열을 입력 받고 문자열의 길이를 구하여 출력하는 프로그램

 

[결과]

 

 

 

[소스코드1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(void)
{
    char ch[20= "";
    scanf("%s", ch);
    int i = 0;
    int length = 0;
    for (i = 0; ch[i] != '\0'; i++)
    {
        length++;
    }
    printf("문자열%s의 길이는 %d",ch,length);
    return 0;
}
cs

 

[설명]

length 변수를 0으로 초기화 해주고

반복문으로 ch변수의[i]번지 값이 '\0' NULL값이 올때까지 반복시키면서 length를 누적시켜준다.

 

 

 

[소스코드2]

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <string.h>
int main(void)
{
    char ch[20= "";
    scanf("%s", ch);
    int length = strlen(ch);
    printf("문자열%s의 길이는 %d",ch,length);
    return 0;
}
cs

 

[설명]

string.h 헤더파일을 추가해준다.

length 라는 변수를 만들어주고 strlen(문자열 변수)를 해주면 길이가 나온다.

int length = strlen(ch);

 

 

 


scanf 를 사용해 문자열을 받으면 띄어쓰기 이후의 문자열은 계산을 안한다.

 

왜냐하면 scanf는 space, tab, '\n'을 만나면 입력버퍼에 데이터를 넣는다.

 

scanf 대신에 gets_s(배열명,사이즈); 를 사용해준다.

 

gets_s 는 '\n'을 만날때까지 입력 버퍼에 데이터를 넣는 것을 보류하기 때문이다.

 

 

 

[결과]

 

 

 

[소스코드]

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <string.h>
int main(void)
{
    char ch[20= "";
    gets_s(ch, sizeof(ch));
    int length = strlen(ch);
    printf("문자열%s의 길이는 %d",ch,length);
    return 0;
}
cs
반응형
반응형

[문제]

상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.

햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.

햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.

 

 

 

[입력]

입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.

 

 

 

[출력]

첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.

 

 

 

[입출력 예제]

입력 출력
800
700
900
198
330
848

 

 

[문제풀이]

버거 3개중에 최소값을 구하고, 음료 2개중에 최소값을 구하고

그 두개의 최소값을 더해서 -50 해주면 된다.

 

 

[소스코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<stdio.h>
int min(int * min, int size);
int main(void)
{
    int buger[3= { 0 };
    int drink[2= { 0 };
    int result = 0;
    for (int i = 0; i < 3; i++)
    {
        scanf("%d"&buger[i]);
    }
    for (int i = 0; i < 2; i++)
    {
        scanf("%d"&drink[i]);
    }
    result = (min(buger, 3)) + (min(drink, 2)) - 50;
    printf("%d", result);
}
int min(int * min, int size)
{
    int result = min[0];
    for (int i = 0; i < size; i++)
    {
        if (result > min[i])
        {
            result = min[i];
        }
    }
    return result;
}
cs

 

 

[결과]

 

 

[문제출처 및 문제풀기]

https://www.acmicpc.net/problem/5543

 

5543번: 상근날드

문제 상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된��

www.acmicpc.net

 

반응형

'<Algorithm> > <C>' 카테고리의 다른 글

[백준][C] 2523번 별 찍기 - 13  (0) 2020.07.07
[백준][C] 10817번 세 수  (0) 2020.07.07
[백준][C] 10039번 평균 점수  (0) 2020.07.05
[백준][C] 1110번 더하기 사이클  (0) 2020.07.04
[백준][C] 10951번 A+B - 4  (0) 2020.07.04

+ Recent posts