스키마에듀 0819

2023. 8. 15. 15:46스키마에듀 c언어 수업

728x90

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

 

28701번: 세제곱의 합

$a$의 제곱은 $a$를 두 번 곱한 수로, $a^2$으로 표현합니다. $a^2 = a \times a$입니다. 또한, $a$의 세제곱은 $a$를 세 번 곱한 수로, $a^3$으로 표현합니다. $a^3 = a \times a \times a$ 입니다.

www.acmicpc.net

 

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

 

5543번: 상근날드

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

www.acmicpc.net

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

 

https://www.acmicpc.net/source/18198606

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

#include <stdio.h>

int add[12] ={0,}; //덧셈 경우의 수 저장

int f(int n){
    for(int i=4;i<=n;i++){
        if(add[i]==0){
            add[i] = add[i-3] + add[i-2] + add[i-1];
        }   
    }
    return add[n];
}

int main(void) {
    add[1] = 1;
    add[2] = 2;
    add[3] = 4;
    int t;
    scanf("%d", &t);

    for(int i=0;i<t;i++){
        int n;
        scanf("%d", &n);
        printf("%d\n", f(n));
    }
    
    return 0;
}

 

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

#include<stdio.h>
int main(void)
{
	int n;
	scanf("%d", &n);
	for(int i=0; i<n; i++)
	{
		int n1=0;
		char a[51];
		scanf("%s", a);
		int z=0;
		while(a[z]!='\0')
		{
			if(a[z]=='(')
				n1++;
			if(a[z]==')')
				n1--;
			if(n1<0)
			{
				printf("NO\n");
				break;
			}
			z++;
		}
		if(n1==0)
			printf("YES\n");
		else if(n1>0)
			printf("NO\n");
	}
}

 

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

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

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

int n;
int arr[100001];

int compare(const int*a, const int*b){
    if (*a <*b){
        return -1;
    }else{
        return 1;
    }
    return 0;
}

int binary_search(int x){
    int pl =0;
    int pc;
    int pr = n-1;

    do{
        pc = (pl+pr)/2;
        if(arr[pc]==x){
            return 1;
        }

        if(arr[pc] < x){
            pl = pc+1;
        }

        if(arr[pc] > x){
            pr = pc-1;
        }
    }while(pl<=pr);

    return 0;
}

int main(void){
    
    int m;

    scanf("%d", &n);
    for(int i=0;i<n;i++){
        scanf("%d", &arr[i]);
    }
    
    qsort(arr,n, sizeof(arr[0]), compare);


    scanf("%d", &m);
    int find;
    for(int i=0;i<m;i++){
        scanf("%d", &find);
        int result  = binary_search(find);
        printf("%d\n",result);
    }

    
    return 0;
}

 

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

 

25305번: 커트라인

시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다.

www.acmicpc.net

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


int compare(const int*a, const int*b){
    if (*a < *b){
        return -1;
    }else{
        return 1;
    }
    return 0;
}

int main(void){
    int n;
    int arr[1001];
    int k;


    scanf("%d %d", &n, &k);
    for(int i=0;i<n;i++){
        scanf("%d", &arr[i]);
    }
    
    qsort(arr, n, sizeof(arr[0]), compare);

    // for(int i=0;i<n;i++){
    //     printf("%d ",arr[i]);
    // }
    printf("%d",arr[n-k]);

    
    return 0;
}

 

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

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

 

#include <stdio.h>
#include <string.h>
#define MAX 100
 
char stack[MAX];
int top = -1;
 
//스택에 데이터를 집어넣는다.
int push(char ch) {
    if (top >= MAX - 1) return -1;
    return stack[++top] = ch;
}
 
//스택에서 데이터를 뽑는다.
int pop() {
    if (top < 0) return -1;
    return stack[top--] = '\0';
}
 
//스택 상단의 내용을 읽는다.
char peek() {
    return stack[top];
}
 
//균형잡힌 문자열인지를 판단
void Result(char *ch, int size) {
    for (int i = 0; i < size; i++) {
        if (ch[i] == '(' || ch[i] == ')' || ch[i] == '[' || ch[i] == ']') {
            //top가 -1이라면 무조건 push
            if (top == -1) push(ch[i]);
            else {
                //짝이라면 pop
                if (peek() == '('&&ch[i] == ')') pop();
                else if (peek() == '['&&ch[i] == ']') pop();
                //그 외 push
                else push(ch[i]);
            }
        }
    }
    //top가 -1이면 균형잡힌 문자열
    if (top == -1) printf("yes\n");
    else printf("no\n");
}
 
int main() {
    char str[MAX];
    while (1) {
        top = -1;
        gets(str);
        if (strcmp(str, ".") == 0) break;
        Result(str, strlen(str));
    }
    return 0;
}