백준 - 2
2577번 - 숫자의 개수
<코드>
#include <stdio.h>
int main(void)
{
int a,b,c;
int num,num2;
int arr[10]={0,};
scanf("%d %d %d",&a,&b,&c);
num = a*b*c;
while(num>0)
{
num2 = num%10;
arr[num2]++; //증가
num/=10; // 자릿수 다운
}
for(int i=0;i<10;i++)
{
printf("%d \n",arr[i]);
}
return 0;
}
얻은 점
정수의 자릿수를 쪼갤때는 나누기와 나머지 연산자를 활용하여 구할 수 있다.
다른 방법의 풀이도 생각해보자 !~
1546 : 평균
#include <stdio.h>
int main(void)
{
int n,max;
double arr[1000];
double total=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lf",&arr[i]);
}
// 최댓값 구하기
max = arr[0];
for(int i=0;i<n;i++)
{
if(arr[i]>max)
{
max = arr[i];
}
}
// 평균 구하기
for(int i=0;i<n;i++)
{
arr[i]=(arr[i]/max*100);
total+=arr[i];
}
total = total/n;
printf("%lf",total);
return 0;
}
얻은 점
배열 -> 요소별 접근 -> 배열 최대값 구하기 -> 평균으로 나타내기
8958 : OX퀴즈
#include <stdio.h>
#include <string.h>
int main(void)
{
int num, score;
int sum=0;
char arr[80];
scanf("%d", &num);
for(int i=0;i<num;i++) // 루프문
{
sum=0;
score =1 ;
scanf("%s",arr);
for(int j=0;j<strlen(arr);j++) // strlen활용 -> 문자열 길이 구하기 가능
{
if(arr[j]=='O') // 문자 나타낼때는 작은 따음표
{
sum+=score;
score++;
}
if(arr[j]=='X')
score=1; // 스코어 추가하고 아무것도 안더함
}
printf("%d\n",sum);
}
return 0;
}
얻은 점
문자열 비교할때는 작은따움표다!!! 잊지말자 !
그리고 매 루프문마다 초기화해주는 방법도 항상 머리속에 두기
4344 : 평균은 넘겠지
#include <stdio.h>
int main(void)
{
int c,n;// c: 테스트케이스 n: 학생수
//테스트케이스 입력
scanf("%d",&c);
// 루프문 시작
for(int i=0;i<c;i++)
{
int arr[1000];
int sum=0;
double avr=0.0;
sum=0; // sum초기화
// 학생 수 입력받기
scanf("%d",&n);
for(int j=0;j<n;j++)
{
//학생 별 점수 입력받기
scanf("%d",&arr[j]);
sum+=arr[j]; // i번째 테스트 학생 점수 총 합
}
avr=(double)sum/n; // 평균구하기
int up=0;
for(int k=0;k<n;k++)
{
if(arr[k]>avr)
up++;
}
printf("%.3f%%\n",(double)up*100/n);
}
return 0;
}
얻은점
소수점 설정 -> %.3f 셋째자리까지 출력
소수점 쓰기위해 강제 double형으로 만들 수 있다.
(double)sum 같이 !
배열은 효율적으로 짜는게 중요하다 !
15596 : 정수 N개의 합
#include <stdio.h>
long long sum(int *a, int n)
{
long long ans=0;
for(int i=0;i<n;i++)
ans+=a[i];
return ans;
}
c++기준으로하고,,, main함수 넣어서 두번 컴파일 오류 떴다..
4673 : 셀프넘버
#include <stdio.h>
//셀프 넘버 = 생성자가 없는 숫자
int notSelfNumber(int n) //셀프넘어 아닌 숫자 구하는 함수
{
int total = n;
while(n>0) //n이 0이하로 가기전 까지 반복
{
total+=n%10; //나머지
n/=10; //나누기
->100의자리,10의자리,1의자리 이렇게 더해가는 반복문이다.
}
return total;
}
int main(void)
{
int arr[10001], i,check;
for(i=1;i<10001;i++)
{
check = notSelfNumber(i);
if(check<10001)
arr[check]=1; // 셀프넘버가 아닌 배열의 자리에 1을 저장한다.
}
for(i=1;i<10001;i++)
{
if(arr[i]!=1) //셀프넘버 아닌건 배제
printf("%d\n",i);
}
return 0;
}
얻은점
10,000까지의 숫자를 배열을 활용해서 셀프넘버가 아닌 숫자에 1을 주는것과 같은 표시를 할 수 있다.
반복문을 활용해서 각자리의 숫자에 접근할 수 있다.
1065 : 한수
#include <stdio.h>
// 한수 : 각자릿수가 등차수열을 이룬다
void HanSoo(int n) //셀프넘어 아닌 숫자 구하는 함수
{
int total = 99;
int a,b,c;
if(n<100)
{
printf("%d",n);
}else
{
for(int i=100;i<=n;i++) // 100이하일때는 모두 성립한다.
{
a=i/100; //100의 자리수
b=i/10%10; // 10의 자리수
c = i % 10; // 1의 자리수
if((b-a)==(c-b))
total++;
}
printf("%d",total);
}
}
int main(void)
{
int n;
scanf("%d",&n);
HanSoo(n);
return 0;
}
Author And Source
이 문제에 관하여(백준 - 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seochan99/백준-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)