top of page
게시판 게시물
starkim922
2024년 5월 11일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
#include <stdio.h>
int main(){
int i,m=1,n,x=1;
scanf("%d",&n);
while(1){
if(x>n){
x/=2;
break;
}
x=x*2;
}
printf("%d",x);
return 0;
}
0
0
1
starkim922
2024년 5월 05일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
5301
#include <stdio.h>
int main()
{
int n,k,p,i,x,z=0,s=0;
scanf("%d %d %d",&n,&k,&p);
for(i=1; i<=n; i++)
{
z=0;
// i 번째 묶음 k개 판단하기 ( 팔 수 있는지? 없느닞?)
for(int j=1; j<=k; j++)
{
scanf("%d",&x);
if(x==0) // 방금 들어온 빵이 크림이 없는가?
{
z++;
}
}
if(z<p)// z(이 묶음에 크림이 없는것)이 p개 미만이라면 ?
{
s++;
}
}
printf("%d",s);
return 0;
}
*/
#include <stdio.h>
int arr[101]={};
int arr2[101]={};
int f(int n)
{
int i;
for(int i=1; i<=n; i++)
{
if(arr[i]%2!=0)
{
arr[i]=0;
}
}
int j=1;
if(j==2)
{
printf("%d",j);
}
for(int i=1; i<=n; i++)
{
if(arr[i]!=0)
{
arr2[j]=arr[i];
j++;
}
}
}
int main()
{
int arr[101]={};
int arr2[101]={};
int n,x;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
arr[i]=i;
}
return 0;
}
0
0
2
starkim922
2024년 5월 04일
In 소스 코드 제출
/**5287
#include <stdio.h>
int main(){
int n,a,b,min=1001;
scanf("%d",&n);
for(int i=1; i<=n; i++){
scanf("%d %d",&a,&b);
if(a<=b)
{
if(b<min) min=b;
}
}
if(min==1001) printf("-1");
else printf("%d",min);
return 0;
}
16줄*/
#include <stdio.h>
int main()
{
int n,k,p,i,x,z=0,c;
scanf("%d %d %d",&n,&k,&p);
for(i=1; i<=n; i++)
{
scanf("%d",&x);
for(int j=1; j<=k; j++)
{
x=x+0;
k=k-(p-1);
c=k-p
if(x<=k && x>c)
{
z++;
}
}
}
printf("%d ",z);
return 0;
}
0
0
1
starkim922
2024년 4월 28일
In 소스 코드 제출
/*#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
//*
#include <stdio.h>
int main()
{
int arr[101]={};
int n;
scanf("%d",&n);
if(arr[2]!=0)
{
for(int i=1; i<=n; i++)
{
if(arr[i]/2!=0)
{
arr[i]=0;
}
else
{
arr[i]=arr[i];
}
}
}
printf("%d",arr[1]);
return 0;
}
*/
#include <stdio.h>
int main()
{
int n,a,b,x=10000;
scanf("%d",&n);
for(int i=1 ;i<=n; i++)
{
scanf("%d %d",&a,&b);
if(a<=b)
{
if(b<x)
{
x=b;
}
}
}
if(x==10000)
{
{
printf("-1");
}
else
{
printf("%d",x);
}
}
0
0
4
starkim922
2024년 4월 27일
In 소스 코드 제출
/*#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
#include <stdio.h>
int main()
{
int n,m,a;
int arr[100001]={};
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&m);
arr[m]++;
}
for(int i=0; i<=100000; i++)
{
for(int j=1; j<=arr[i]; j++)
{
printf("%d ",i);
}
}
return 0;
}
4911
#include <stdio.h>
int main()
{
int arr[100001]={};
int m,h=0,n;
scanf("%d",&m);
for(int i=m; i>=1; i--)
{
scanf("%d",&arr[i]);
}
n=arr[1];
for(int i=1; i<=m; i++)
{
if(n<arr[i])
{
h++;
n=arr[i];
}
}
printf("%d",h+1);
}
*/
#include <stdio.h>
int main()
{
int arr[101]={};
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
arr[i]+1;
}
}
0
0
6
starkim922
2024년 4월 21일
In 소스 코드 제출
/*
int main()
{
printf("Hello world!\n");
return 0;
}
//
#include <stdio.h>
int arr[50001]={}; // 정렬 한 배열
int bs(int s, int e, int k)
// arr[start] ~ arr[end] 에 k 값의 위치를 리턴, 없다면 -1리턴
{
if(s>e) return -1;
int mid = (s+e)/2;
if(arr[mid]==k) return mid;
else if(arr[mid]>k) return bs(s,mid-1,k);
else return bs(mid+1,e,k);
}
int main()
{
int n,a,j,i,t;
int brr[50001]={}; // 정렬 안 한 배열
scanf("%d",&n);
for(i=1; i<=n ;i++){
scanf("%d",&arr[i]);
brr[i]=arr[i];
}
for(i=1; i<n; i++){
for(j=1; j<=n-i; j++){
if(arr[j]>arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=1; i<=n; i++){
// brr[i]가 arr에 어디에 있는지?
printf("%d ",bs(1,n,brr[i]));
}
return 0;
}
//#include <stdio.h>
//int arr[4500001]={};
//int bs(int s, int e, int k)
//{
// if(s>e) return -1;
// int mid = (s+e)/2;
// if(arr[mid]==k) return mid;
// else if(arr[mid]>k) return bs(s,mid-1,k);
// else return bs(mid+1,e,s);
//}
//int main()
//{
// int n,a,j,i,t;
// int brr[100001]={};
// scanf("%d",&n);
// for(int i=1; i<=n; i++)
// {
// scanf("%d",&arr[i]);
// }
// for(i=1; i<n; i++)
// {
// for(j=1; j<=n-i; j++)
// {
// if(arr[j]>arr[j+1])
// {
// t=arr[j];
// arr[j]=arr[j+1];
// arr[j+1]=t;
// }
// }
// }
// for(int i=1; i<=n; i++){
// printf("%d ",bs(i,n,brr[i]));
// }
//}
arr[i] :i번째 입력된 데이터 (x)
i에 대한 메모 (o) ex) i가 입력된 횟수
//
#include <stdio.h>
int main()
{
int arr[24]={};
int n,m;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&m);
arr[m]++;
}
for(int i=1; i<=23; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] .... a[10만]
0 1 2 0 0 1 0 0 1 ... 0
-> i를 a[i]번 출력
1 2 2 5 8
*/
#include <stdio.h>
int main()
{
int n,m;
int arr[100001]={};
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&m);
arr[m]++;
}
for(int i=0; i<=100000; i++)
{
for(int j=0;j<arr[i];j++) // arr[i]번 반복
{
printf("%d ",i);
}
}
return 0;
}
0
0
2
starkim922
2024년 4월 20일
In 소스 코드 제출
/*
#include <stdio.h>
typedef struct
{
int score,num;
}student;
int main()
{
int n,a,j,i;
student arr[50001]={};
student t;
scanf("%d",&n);
for(i=1; i<=n ;i++)
{
scanf("%d",&arr[i].score);
}
for(i=1; i<n; i++)
{
for(j=1; j<=n-i; j++)
{
if(arr[j].score>arr[j+1].score)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
arr[j].num=j;
}
}
}
for(int j = 1; j<=n; j++)
{
printf("%d ",arr[j].num);
}
return 0;
}
*/
/*
#include <stdio.h>
int arr[50001]={}; // 정렬 한 배열
int bs(int s, int e, int k)
// arr[start] ~ arr[end] 에 k 값의 위치를 리턴, 없다면 -1리턴
{
if(s>e) return -1;
int mid = (s+e)/2;
if(arr[mid]==k) return mid;
else if(arr[mid]>k) return bs(s,mid-1,k);
else return bs(mid+1,e,k);
}
int main()
{
int n,a,j,i,t;
int brr[50001]={}; // 정렬 안 한 배열
scanf("%d",&n);
for(i=1; i<=n ;i++){
scanf("%d",&arr[i]);
brr[i]=arr[i];
}
for(i=1; i<n; i++){
for(j=1; j<=n-i; j++){
if(arr[j]>arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=1; i<=n; i++){
// brr[i]가 arr에 어디에 있는지?
printf("%d ",bs(1,n,brr[i])-1);
}
return 0;
}
이분 탐색
binary search -> bs
<< 정렬이 되어있는 경우, 반씩 나누면서 찾기>>
5번만 물어보면 k가 어디있는지? 없는지? 알 수 있따!
순차 탐색
100번 물어보면 무조건 k가 어디이쓴지?없는지?
2084
#include <stdio.h>
int arr[10000000]={};
int bs(int s,int e,int k)
{
if(s>e) return -1; // 못찾았으면?
int mid = (s+e)/2;
if(arr[mid]==k) return mid;
else if(arr[mid]>k) return bs(s,mid-1,k);
else return bs(mid+1,e,k);
}
int main()
{
int n,m,s,a;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
scanf("%d",&s);
for(int i=1; i<=s; i++)
{
scanf("%d",&a);
printf("%d\n",bs(1,n,a));
}
return 0;
}
*/
#include <stdio.h>
int bs(int s,int e,int k)
{
if(s>e) return -1;
int mid = (s+e)/2;
if(arr[mid]==k) bs
}
int main()
{
}
0
0
2
starkim922
2024년 4월 14일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
1236
#include <stdio.h>
typedef struct
{
int num,score,ioc;
}student;
int main()
{
student t;
student arr[9999];
int n,x,z;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d %d",&arr[i].score,&arr[i].ioc);
arr[i].num=i;
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j].score<arr[j+1].score)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
else if(arr[j].score==arr[j+1].score)
{
if(arr[j].ioc<arr[j+1].ioc)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
else if(arr[j].ioc==arr[j+1].ioc)
{
if(arr[j].num>arr[j+1].num)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
}
for(int i=1; i<=n; i++)
{
printf("%d %d %d\n",arr[i].num,arr[i].score,arr[i].ioc);
}
return 0;
}
3015
#include <stdio.h>
typedef struct
{
char name[15];
int score;
}student ;
int main()
{
student t;
int n,m;
student arr[101];
scanf("%d %d",&n,&m);
for(int i=1; i<=n; i++)
{
scanf("%s %d",arr[i].name,&arr[i].score);
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j].score<arr[j+1].score)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(int i=1; i<=m; i++)
{
printf("%s\n",arr[i].name);
}
}
*/
#include <stdio.h>
typedef struct
{
int score,num;
}student ;
int main()
{
int n,a,j,i;
student arr[50001]={};
student t;
scanf("%d",&n);
for(i=1; i<=n ;i++)
{
scanf("%d",&arr[i].score);
arr[i].num=i;
}
for(i=1; i<n; i++)
{
for(j=1; j<=n-i; j++)
{
if(arr[j].score>arr[j+1].score)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
arr[j].num=j;
}
}
for(i=1; i<=arr[i].num; i++)
{
printf("%d ",arr[j].num);
}
return 0;
}
0
0
2
starkim922
2024년 4월 07일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
1805
#include <stdio.h>
typedef struct
{
int score;
int core;
}student;
int main()
{
student arr[99999]={};
int n;
student t;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d %d",&arr[i].core,&arr[i].score);
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j].core>arr[j+1].core)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(int i=1; i<=n; i++)
{
printf("\n%d %d\n",arr[i].core,arr[i].score);
}
return 0;
}
// char s1[10]="hello";
// char s2[10]="apple";
// printf("%d",strcmp(s1,s2));
// // strcmp(s1,s2) : s1와 s2가 사전식순서로 있다면 <0
// s1과 s2가 같은 문자열 이라면 ==0
// s2와 s1이 사전식순서대로 있다면 >0
3019
#include <stdio.h>
typedef struct
{
int day;
char name[101];
}student;
int main()
{
int n,z=0;
int y, m, d;
int value;
student t;
student arr[1000]={};
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%s %d %d %d",arr[i].name,&y,&m,&d);
arr[i].day = y*10000+m*100+d;
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j].day>arr[j+1].day)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
else if(arr[j].day==arr[j+1].day)
{
if(strcmp(arr[j].name,arr[j+1].name)>0)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
for(int i=1; i<=n; i++)
{
printf("%s\n",arr[i].name);
}
return 0;
}
버블 : 코드가 sooo easy but sooo slow
선택 : 코드가 for human
삽입 : 코드가 a little bit hard but 어느정도 정렬이 되어있는 배열 에서 sooo fast
5 1 4 2 1 7 78 9 5 4 26 4 4 -> 버블 선택 삽입 아무거나
9 8 7 6 1 2 4 5 4 3 2 1 -> 삽입정렬이 나머지애들보다 빠르더라~
1443
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=2; i<=n; i++)
{
key=a[i];
for(j = i-1; j>=1 && key<a[j] ; j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
#include <stdio.h>
int main()
{
}
0
0
4
starkim922
2024년 4월 06일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
3011
#include <stdio.h>
int main()
{
int arr[10001];
int n,i,j,t,z=0,a;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
for(i=1; i<n; i++)
{
z=0;
for(j=1; j<=n-i; j++)
{
if(arr[j]>arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
z++;
}
}
if(z==0) // 바꾼 적이 한 번도 없다면??
{
break;
}
}
printf("%d",i-1);
return 0;
}
4501
#include <stdio.h>
int main()
{
int arr[101]={};
int n=7,t;
for(int i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j]>arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
printf("%d\n%d",arr[7],arr[6]);
return 0;
}
*/
#include <stdio.h>
typedef struct
{
int score;
char name[100];
}student;
int main()
{
int n;
student t;
student arr[55]={};
scanf("%d ",&n);
for(int i=1; i<=n; i++)
{
scanf("%s %d",arr[i].name,&arr[i].score);
}
for(int i=1; i<n; i++)
{
for(int j=1; j<=n-i; j++)
{
if(arr[j].score<arr[j+1].score)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
printf("%s ",arr[3].name);
return 0;
}
0
0
4
starkim922
2024년 3월 31일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include <stdio.h>
int queue [200]={};
int front=-1;
int stack[201]={};
int top=-1;
int rear=-1;
int push(int x)
{
queue[rear]=x;
rear++;
}
int pop()
{
if(top==-1) return ;
return stack[top--];
}
int pop2()
{
if(front!= stack)
{
front++;
return queue[front];
}
}
int main()
{
int n,num;
char str[99999];
scanf("%d\n",&n);
for(int i=1; i<=n; i++)
{
gets(str);
if(str[0]=='p' && str[1]=='u')
{
num=0;
for(int j=6; str[j]!=' '; j++)
{
num=num*10+str[j]-'0';
}
push(num);
}
else if(str[0]=='t')
{
if(top==-1)
{
printf("-1\n");
}
}
else if(str[0]=='p' && str[1]=='o')
{
pop2();
}
else if(str[0]=='s')
{
printf("%d\n",rear-front);
}
else
{
if(front==rear)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
}
return 0;
}
정렬(sort) : 바르게 배열하는것 ( 오름차순 or 내림차순)
- easy but slow (ex)버스) -> 버블, 선택, 삽입
- hard but fast (ex)비행기) -> (퀵, 병합), 기수, 힙, ......
1. " 어떤 종류의 정렬이 무조건 빠르다 " (x)
집갈때 비행기를 타면 무조건 빠르다 (x)
버블정렬 (두개씩 비교하면서 바꾸는거)
n=5
5 1 4 2 3
round1) i=1
[5 1] 4 2 3 j=1
1 [5 4] 2 3 j=2
1 4 [5 2] 3 j=3
1 4 2 [5 3] j=4
1 4 2 3 "5"
round2) i=2
[1 4] 2 3 "5 j=1
1 [4 2] 3 "5 j=2
1 2 [4 3] "5 j=3
1 2 3 "4 5
round3) i=3
[1 2] 3 "4 5 j=1
1 [2 3] "4 5 j=2
1 2 "3 4 5
round4) i=4
1 " 2 3 4 5 j=1
-> 5개 중에 4개가 자기자리에있어, 그렇다면?
모두 자기자리에 있다 !!!정렬 끝~
1 2 3 4 5
*/
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp;
int main() {
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
for(i=1; i<n; i++)//
{
for(j=1; j<=n-i; j++)//
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 1; i <= n; i++)
printf("%d\n", a[i]);
return 0;
}
1709 버블정렬
#include <stdio.h>
int main()
{
int arr[10001];
int n,t,i,j;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n-i; j++)
{
if(arr[j]<arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=1; i<=n; i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
선택정렬 : 맨 앞자리에 와야 할 숫자를 선택하기
5 1 4 2 3
1" 5 4 2 3
1 2 " 4 5 3
1 2 3 " 5 4
1 2 3 4 " 5
1442
#include <stdio.h>
int a[10001];
int n, i, j, temp, min;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=1; i<n; i++) {
min=i; // min : 최소값의 위치
for (j=i+1; j<=n; j++) {
if(a[min]>a[j])
{
min=j;
}
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
1709 선택정렬
#include <stdio.h>
int main()
{
int arr[100001]={};
int n,j,i,t,min;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&arr[i]);
}
for(i=1; i<n; i++)
{
min=i;
for(j=i+1; j<=n; j++)
{
if(arr[min]<arr[j])
{
min=j;
}
}
t=arr[i];
arr[i]=arr[min];
arr[min]=t;
}
for(i=1; i<=n; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
버블정렬의 최악의 상황
1 2 3 4 5 .... 98 100 99
round1) 99번비교
1 2 3 4 5 ...... 99 "100"
round2) 98번비교
1 2 3 4 5 . . .98 "99 100"
*/
#include <stdio.h>
int main()
{
int arr[10001];
int n,i,j,t,z=0;
scanf("%d",&n);
for(i=1; i<n; i++)
{
scanf("%d",&arr[i]);
}
for(i=1; i<n; i++)
{
z=0;
for(j=1; j<=n-i; j++)
{
if(arr[j]>arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
z++;
}
}
if(z==0)
{
break;
}
}
return 0;
}
0
0
8
starkim922
2024년 3월 30일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
5137
#include <stdio.h>
#include <string.h>
rear=-1;
front=-1;
queue[200501]={};
int push(int n)
{
queue[rear]=n;
rear++;
}
int pop()
{
queue[front] = 0;
front++;
}
int main()
{
int x=100000,a,num, min,z=0;
char str[100000]={};
scanf("%d\n",&a);
for(int i=1; i<=a; i++)
{
gets(str);
if(str[0]== '+')
{
num = 0;
for(int j=2; j<strlen(str); j++)
{
num = num*10+str[j]-'0';
}
push(num);
}
else if(str[0]=='-')
{
pop();
}
else
{
min = 99999999;
for(int j=front; j<rear; j++) {
if(min > queue[j]) {
min = queue[j];
}
}
printf("%d\n",min);
}
}
return 0;
}
*/
#include <stdio.h>
int queue [200]={};
int front=-1;
int stack[201]={};
int top=-1;
int rear=-1;
int push(int x)
{
queue[rear]=x;
rear++;
}
int pop()
{
if(top==-1) return ;
return stack[top--];
}
int pop2()
{
if(front!=stack)
{
front++;
return queue[front];
}
}
int main()
{
int n,num;
char str[99999];
scanf("%d\n",&n);
for(int i=1; i<=n; i++)
{
gets(str);
if(str[0]=='p' && str[1]=='u')
{
num=0;
for(int j=6; j<strlen(str); j++)
{
num=num*10+str[j]-'0';
}
push(num);
}
else if(str[0]=='t')
{
pop();
}
else if(str[0]=='p' && str[1]=='o')
{
pop2();
}
else if(str[0]=='s')
{
printf("%d",rear-front);
}
else
{
if(queue==-1)
{
printf("true");
}
else
{
printf("false");
}
}
}
}
0
0
3
starkim922
2024년 3월 24일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
3127
#include <stdio.h>
#include <string.h>
int top=-1;
int stack[201]={};
void push(int n)
{
top++;
stack[top]=n;
}
int pop()
{
if(top!=-1)
{
return stack[top--];
}
}
int main()
{
char str[201]={};
int x,y,z,num=0,a,b;
gets(str);
for(int i=0; str[i]!=NULL; i++)
{
if('0'<=str[i]&&str[i]<='9')
{
num=num*10+(str[i]-'0');
if(str[i+1]==' ')
{
push(num);
num=0;
}
}
else if(' '!=str[i])
{
a=pop();
b=pop();
if(str[i]=='+')
{
push(a+b);
}
else if(str[i]=='-')
{
push(b-a);
}
else if(str[i]=='*')
{
push(a*b);
}
}
}
while(top!=-1)
{
printf("%d",pop());
}
return 0;
}
stack vs queue
쌓는거 통과하는거
엘리베이터 에스컬레이터
3103
#include <stdio.h>
#include <string.h>
int queue[200]={};
int front=-1;
int back=-1;
int stack[201]={};
int push(int x)
{
back++;
queue[back]=x;
}
int pop()
{
if(front!=back)
{
front++;
return queue[front];
}
}
int main()
{
char str[201]={ };
int n,a,num,x;
scanf("%d\n",&n);
for(int i=1; i<=n; i++)
{
gets(str);
if(str[0]=='p' && str[1]=='u')
{
num=0;
for(int j=6; str[j]!=' '; j++)
{
num = num*10+str[j]-'0';
}
push(num);
}
else if(str[0]=='p' && str[1]=='o')
{
pop();
}
else if(str[0]=='b')
{
if(front==back)
{
printf("-1\n");
}
else
{
printf("%d\n",queue[back]);
}
}
else if(str[0]=='f')
{
if(front==back)
{
printf("-1\n");
}
else
{
printf("%d\n",queue[front+1]);
}
}
else if(str[0]=='s')
{
printf("%d\n",back-front);
}
else
{
if(front == back)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
}
return 0;
}
*/
#include <stdio.h>
#include <string.h>
rear=-1;
front=-1;
queue[201]={};
int push(int z)
{
rear++;
queue[rear]=z;
}
int pop()
{
front++;
return quere[front];
}
int main()
{
char str[200001]={};
int x,n,num,sum=0,a=999999;
scanf("%d",&x);
for(int i=12; i<=x; i++)
{
gets(str);
if(str[0] == '+')
{
for(int j=2; str[j] !=' '; j++)
{
num = num*10 + str[j]-'0';
}
push(num);
}
else if(str[0] == '-')
{
pop();
}
else
{
if(back<=x<=front)
{
sum=sum+str[x]='0';
if(a>x)
{
a=x;
printf("%d",a);
}
}
}
}
}
0
0
3
starkim922
2024년 3월 23일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
3021
#include <stdio.h>
#include <string.h>
char a[101]={};
char b[101]={};
char e;
int topa,topb;
int stack[201]={};
int top=-1;
void push(int x)
{
top++;
stack[top]=x;
}
int pop()
{
if(top!=-1)
{
return stack[top--];
}
}
int popa()
{
if(topa!=-1)
{
return a[topa--]-'0';
}
else
{
return 0;
}
}
int popb()
{
if(topb!=-1)
{
return b[topb--]-'0';
}
else
{
return 0;
}
}
int main()
{
int c=0,num=0,s=0,s1=0;
scanf("%s %s",a,b);
topa = strlen(a)-1;
topb = strlen(b)-1;
while(1)
{
num=popa()+popb()+c;
c=num/10;
push(num%10);
if(topa==-1 && topb==-1)
{
break ;
}
}
if(c==1) push(1);9
while(top!=-1)
{
printf("%d",pop());
}
return 0;
}
*/
#include <stdio.h>
#include <string.h>
int top=-1;
int stack[201]={};
void push(int n)
{
top++;
stack[top]=n;
}
int pop()
{
if(top!=-1)
{
return stack[top--];
}
}
int main()
{
char str[201]={};
int x,y,z,num=0,a,b;
gets(str);
for(int i=0; str[i]!=NULL; i++)
{
if('0'<=str[i]&&str[i]<='9')
{
if(str[i+1]==' ')
{
push(num);
num=0;
}
}
else if(' '!=str[i])
{
a=pop();
b=pop();
if(str[i]=='+')
{
push(a+b);
}
else if(str[i]=='-')
{
push(b-a);
}
else if(str[i]=='*')
{
push(a*b);
}
}
}
while(top!=-1)
{
printf("%d",pop);
}
return 0;
}
0
0
3
starkim922
2024년 3월 17일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
4833
#include<stdio.h>
#include <string.h>
int main()
{
int top=0,sum=0;
char str[100000]={};
scanf("%s",str);
for(int i=0; str[i]!=NULL; i++)
{
if(str[i]=='('&& str[i+1]=='(')
{
top++;
}
else if(str[i]=='(' && str[i+1]==')')
{
sum+=top;
}
else if(str[i-1]!='(' && str[i]==')')
{
top--;
sum++;
}
}
printf("%d",sum);
}
3321
str[0] = '3'
str[1] = '3'
str[2] = '2'
*////선생님 작동 중지가 나와요.
#include <stdio.h>
#include <string.h>
char a[101]={};
char b[101]={};
int topa, topb;
int stack[201]={};
int top=-1;
void push(int x)
{
top++;
stack[top]=x;
}
int pop()
{
if(top!=-1)
return stack[top--];
}
int popa()
{
if(topa!=-1)
return a[topa--]-'0';
else
{
return 0;
}
}
int popb()
{
if(topb!=-1)
return b[topb--]-'0';
else
{
return 0;
}
}
int main()
{
int c = 0, num=0; //올림수
scanf("%s %s",a,b);
topa = strlen(a)-1;
topb = strlen(b)-1;
while(1)
{
//a에서 pop한거 + b에서 pop한거 + c(올림수) 계산
num= popa()+popb()+c;
// 위에서 계산한 수의 십의자리수는 c올림수에 저장
c=num/10;
//위에서 계산한 수의 일의자리수는 결과스택에 push
push(num%10);
if(topa==-1 && topb==-1) //계산할 게 없다면
{
break;
}
}
////////////////////////////////
//결과 스택의 모든 숫자 출력하기//
while(top!=-1)
{
printf("%d",pop());
}
return 0;
}
0
0
2
starkim922
2024년 3월 16일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
3129
#include <stdio.h>
#include <string.h>
int top=-1;
int main()
{
int n=0,m=0,s=0;
char str[50001]={};
scanf("%s",str);
for(int i=0; str[i]!=NULL; i++)
{
if(str[i]=='(')
{
n++;
if(n==m)
{
n=0;
m=0;
}
}
else
{
if(n==0)
{
s++;
}
if(n==m)
{
n=0;
m=0;
}
else
{
m++;
}
}
}
//printf("%d %d %d",n,m,s);
if(m==n && s==0)
{
printf("good");
}
else
{
printf("bad");
}
return 0;
}*/
/*
#include <stdio.h>
#include <string.h>
int main()
{
int top=0, sum=0;
// top : 현재 놓인 막대기 개수
// sum : 총 잘린 조각 개수
char str[100000]={};
scanf("%s",str);
for(int i=0; str[i]!=0; i++)
{
if(str[i]=='('&& str[i+1]=='(') //새로운 막대기가 놓였다면
{
top++;
}
else if(str[i]=='(' && str[i+1]==')') //레이저가 나왔다면
{
sum+=top;
}
else if(str[i-1]!='(' && str[i]==')') //막대기가 끝날때
{
top--;
sum++;
}
}
printf("%d",sum);
}
*/
0
0
5
starkim922
2024년 3월 10일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
3102 선생님 이 풀어준 문제
#include <stdio.h>
int stack[201]={};
int top=-1;
void push(int n)
{
top++;
stack[top]=n;
}
int pop()
{
if(top==-1) return ;
return stack[top--];
}
// '0' = 48
// '1' = 49
// '5'- (48 ='0') = 5
int main()
{
int n,x=0,m,num,z=6;
char str[101]={};
scanf("%d\n",&m);
for(int i=1; i<=m; i++)
{
gets(str);
if(str[0]=='p' && str[1]=='u')
{
num=0;
for(int j=6; str[j]!=' '; j++)
{
num=num*10+(str[j]-'0');
}
push(num);
}
else if(str[0] =='t' )
{
if(top==-1)
{
printf("-1\n");
}
else
{
printf("%d\n",stack[top]);
}
}
else if(str[0]== 's' )
{
printf("%d\n",top+1);
}
else if(str[0]=='p' && str[1]=='o' )
{
pop();
}
else
{
if(top==-1)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
}
return 0;
}
stack의 push, pop 전부 구현하고.... (x)
stack의 개념만 사용 하여 아이디어를 생각하는게 포인트 (o)
*/
#include <stdio.h>
#include <string.h>
int top=-1;
int main()
{
int n=0,m=0;
char str[50001]={};
scanf("%s",str);
1==')';
2=='(';
if(str==1)
{
n++;
}
else
{
m++;
}
printf("%d %d",n,m);
/*
if(n==m)
{
printf("good");
}
else
{
printf("bad");
}*/
return 0;
}
0
0
3
starkim922
2024년 3월 09일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
2016
#include <stdio.h>
char stack[201]={};
int top=-1;
void push(char n)
{
top++;
stack[top]=n;
}
char pop()
{
if(top==-1) return ;
return stack[top--];
}
int main()
{
int m,n=0;
char str[201]={};
scanf("%d ",&m);
scanf("%s",str);
for(int i=m-1; i>=0; i--)
{
push(str[i]);
n=n+1;
if(n%3==0 && m!=n)
{
push(',');
}
}
while(top!=-1)
{
printf("%c",pop());
}
return 0;
}
*/
#include <stdio.h>
char stack[201]={};
int top=-1;
void push(char n)
{
top++;
stack[top]=n;
}
char pop()
{
if(top==-1) return ;
return stack[top--];
}
int main()
{
char str[101]={};
int n,x=0,m;
scanf("%d",&m);
for(int i=1; i<=m; i++)
{
scanf("%s\n",str);
}
if(str[0]=='p' && str[1]=='u' && str[2]=='s' && str[3]=='h')
{
push(str[7]);
}
else if(str[0]=='t' && str[1]=='o' && str[2]=='p')
{
x=x+1;
}
else if(str[0]=='s' && str[1]=='i' && str[2]=='z' && str[3]=='e')
{
printf("%d",&x);
}
else if(str[0]=='p' && str[1]=='o' && str[2]=='p')
{
pop();
}
return 0;
}
0
0
6
starkim922
2024년 3월 03일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
1402
#include <stdio.h>
int stack[1001]={};
int top=-1;
void push(int n) // n을 스택에 넣으세요
{
top++;
stack[top]=n;
}
void pop() // 스택의 맨 위값을 빼세요
{
if(top==-1) // 스택이 비어있다면?
{
return ; // 아무것도 하지 마세요
}
printf("%d ",stack[top]); // 맨 위 데이터를 출력
top--;
}
int main()
{
int n,m;
scanf("%d",&m);
for(int i=1; i<=m; i++)
{
scanf("%d",&n);
push(n);
}
// 스택에 있는 전부 pop
while(top!=-1)
{
pop();
}.
return 0;
}
3117
#include <stdio.h>
int stack[1000001]={};
int top=-1;
void push(int n)
{
top++;
stack[top]=n;
}
int pop()
{
if(top==-1) return ;
return stack[top--]; // 꼭 기억해주기!!! 탑이랑 스택이랑 같이 하기.
}
int main()
{
int n,m,sum=0;
scanf("%d",&m);
for(int i=1; i<=m; i++)
{
scanf("%d",&n);
if(n==0)
{
pop();
}
else
{
push(n);
}
}
while(top!=-1)
{
sum=sum+pop();
}
printf("%d" , sum);
return 0;
}
1714
#include <stdio.h>
char stack[9999999]={};
int top=-1;
void push(char n)
{
top++;
stack[top]=n;
}
char pop()
{
if(top==-1) return ;
return stack[top--];
}
int main()
{
char str[999999]={};
scanf("%s",str);
for(int i=0; str[i]!=NULL; i++)
{
push(str[i]);
}
while(top!=-1)
{
printf("%c",pop());
}
return 0;
}
*/
#include <stdio.h>
char stack[201]={};
top=-1;
void push(int n)
{
top++;
stack[top]=n;
}
char pop()
{
if(top==-1) return ;
return stack[top--];
}
int main()
{
int n,m;
char str[201]={};
scanf("%d",&m);
for(int i=1; i<=m; i++)
{
scanf("%d",&n);
}
for(int i=1; str[i]!=NULL; i++)
{
push(str[i]);
}
while(top!=-1)
{
printf("%c",pop);
}
return 0;
}
0
0
3
starkim922
2024년 3월 02일
In 소스 코드 제출
/*
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
4891
#include <stdio.h>
int main()
{
int z,max=0,i,x,min=1000;
scanf("%d",&z);
for(i=1; i<=z; i++)
{
scanf("%d",&x);
if(min>x)
{
min=x;
}
if(max<x)
{
max=x;
}
}
printf("%d",max-min);
return 0;
}
4051
#include <stdio.h>
int main()
{
double s,e,m,x=0;
int i,h;
for(i=1; i<=5; i++)
{
scanf("%lf %lf",&s,&e);
m=e-s-1;
if(m<=0)
{
m=0;
}
if(m>=4)
{
m=4;
}
x=x+m;
}
if(15<=x)
{
h=10000*x-10000*x*5/100;
}
else if(5>=x)
{
h=10000*x+10000*x*5/100;
}
else
{
h=x*10000;
}
printf("%d",h);
return 0;
}
#include <stdio.h>
int main()
{
int s,s1,s2,s3,i;
scanf("%d %d %d\n%d",&s1,&s2,&s3,&s);
s3=s+s3;
if(s3>=60)
{
s2=s2+s3/60;
s3=s3%60;
}
if(s2>=60)
{
s1=s1+s2/60;
s2=s2%60;
}
if(s1>=24)
{
s1=s1%24;
}
printf("%d %d %d",s1,s2,s3);
return 0;
}
자료구조
1. 스택 + 2. 큐
3. 정렬
4. 탐색 (이진탐색)
5. Graph (DFS/BFS)
#include <stdio.h>
int stack[100]={};
int top = -1 ; // 맨위 데이터의 위치
void push(int n)
{
top++;
stack[top]=n;
view();
}
void pop() // stack에서 맨 위에 데이터 하나 빼세요
{
if(top==-1)
{
printf("stack is empty!!!!!!\n");
return ;
}
printf("pop data :%d\n",stack[top]);
top--;
view();
}
void view()
{
printf("stack : ");
for(int i=0;i<=top;i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
int main()
{
push (8);
push(5);
//top++;
//stack[top]=5;
push(2);
//top++;
//stack[top]=2;
// printf("%d\n",stack[top]);
pop();
pop();
pop();
pop();
//top--;
//printf("%d\n",stack[top]);
//top--;
//printf("%d\n",stack[top]);
return 0;
}
*/
#include <stdio.h>
int stack[1001]={};
int top=-1;
void push(int n)
{
top++;
stack[top]=n;
return ;
}
void pop()
{
if(top==-1)
{
return ;
}
printf("%d",stack[top]);
top--;
return ;
}
int main()
{
int n,m,c;
scanf("%d",&m);
for(int i=1; i<=m; i++)
{
scanf("%d",&n);
push(n);
}
for(int i=1; i<=n; i++)
{
c=c+n ;
}
return 0;
}
0
0
4
starkim922
더보기
bottom of page