스키마에듀 백준 0729

2023. 7. 25. 13:04스키마에듀 c언어 수업

728x90

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

 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

#include <stdio.h>
#define MAX 100001

int stack[MAX];
int top = 0;
int sum=0;

void push(int x){
	if(top>=MAX){
		return;
	}
	stack[top++] = x;
}

void pop(){
	if(top<=0){
		return;
	}
	top --;
}

int main(void){
	int k;
	scanf("%d", &k);
	
	int x;
	
	for(int i=0;i<k;i++){
		scanf("%d", &x);
		
		if(x==0){
			pop();
		}else{
			push(x);		
		}
	}
	
	for(int j=0;j<top;j++){
		sum += stack[j];
	}
	
	printf("%d", sum);
	
	return 0;
}

 

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

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

#include <stdio.h>
#include <string.h>
#define MAX 100001

int stack[MAX];
int top = 0;
int sum=0;

void push(int x){
	if(top>=MAX){
		return;
	}
	stack[top++] = x;
}

int pop(){
	if(top<=0){
		return -1;
	}
	return stack[--top];
}

int main(void){
	int k;
	scanf("%d", &k);
	
	char command[10];
	int x;
	
	for(int i=0;i<k;i++){
		scanf("%s", command);
	
		if(strcmp(command,"push")==0){
			scanf("%d", &x);
			push(x);
		}
		
		if(strcmp(command,"pop")==0){
			int p = pop();
			printf("%d\n", p);
		}
		
		if(strcmp(command,"top")==0){
			if(top==0){
				printf("-1\n");
			}else{
				
			printf("%d\n", stack[top-1]);
			}
			
		}
		
		if(strcmp(command,"size")==0){
			printf("%d\n", top);
		}
		if(strcmp(command,"empty")==0){
			if(top==0){
				printf("1\n"); //stack이 비어있으면 
			}
			else{
				printf("0\n"); //stack이 비어있지 않으면 
			}
		}
	}
	
	return 0;
}

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

 

23305번: 수강변경

$1$번 학생과 $5$번 학생이 수업을 교환하고, $2$번 학생과 $4$번 학생이 수업을 교환하면 $3$번 학생을 제외한 모든 학생이 원하는 수업을 수강할 수 있다.

www.acmicpc.net

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

 

21313번: 문어

문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던

www.acmicpc.net

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

#include <stdio.h>
 
int main(){

  int arr[15][15] = {0,};  // 아파트의 층은 14보다 작거나 같기때문에 각각 15크기의 2중배열을 선언하고 0으로 초기화.
  int test,h,w;

  for(int i=0; i<15; i++){
    arr[0][i] = i;  // 문제를 보면 0층의 i호에는 i명만큼 산다고해서 0층에는 i명으로 선언.
  }
  
  for(int i=1; i<15; i++){
    for(int j=1; j<15; j++){
      arr[i][j] = arr[i-1][j] + arr[i][j-1];
    }  // 문제에서 말한 공식대로 밑에층의 1호부터 해당호까지 사람들의 합을 arr[i][j]에 넣어준다.
  }

  scanf("%d",&test); 
  
  for(int i=0;i<test;i++){
    scanf("%d %d", &h, &w);  
    printf("%d\n", arr[h][w]);  
  }

	return 0; 
}

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

 

2587번: 대표값2

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 +

www.acmicpc.net

 

#include <stdio.h>
#include <string.h>

int main(){
   
    int avg = 0, i, j, temp, num[5] = {0, }, sum = 0;
   
    for(i = 0; i < 5; i++){
       
        scanf("%d", &num[i]);
        sum += num[i];
    }
   
    avg = sum / 5;
   
    for(i = 0; i < 5; i++ ){
       
        for(j = 0; j < 5; j++){
           
            if(num[j] > num[j + 1]){
               
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
        }
    }
   
    printf("%d\n%d", avg, num[2]);
}