백준(baekjoon)-c언어 정리
2914 저작권
#include<stdio.h>
int main(void){
int melody, result, avg;
scanf("%d %d", &melody, &avg);
result=melody*(avg-1)+1;
printf("%d", result);
}
입력받은 값으로 저작권의 개수 계산
-> 저장권이 있는 멜로디의 개수=곡의 개수 * 평균값
- 조건: 평균값을 올림하여 정수로 만들어야함
->평균값을 무조건 올림처리를 하므로 주어진 평균값보다 1 작은 값이 되도록 하는 멜로디 개수를 구하고 거기서 1을 더해준다.
3046 R2
#include<stdio.h>
int main(void){
int r1, s, r2;
scanf("%d %d", &r1, &s);
r2=2*s-r1;
printf("%d",r2);
}
s=(r1+r2)/2이므로 r2에 대한식으로 변환하여 값을 구한다.
r2=2* s-r1
3052 나머지
#include <stdio.h>
int main(void){
int i,j, ip, count, result=0, suin[10];
for(i=0;i<10;i++){
scanf("%d", &ip);
suin[i]=ip%42;
}
for(i=0;i<10;i++){
count=0;
for(j=i+1;j<10;j++){
if(suin[i]==suin[j])
count++;
}
if(count==0)
result++;
}
printf("%d", result);
}
숫자 10개를 입력받고 각각의 숫자를 42로 나눈 나머지를 저장해둔다.
저장해둔 숫자를 하나씩 다른 숫자들과 비교해보고(1번째 숫자는 2~10숫자 비교, 2번째숫자는 3~10까지 비교)
같은 숫자가 없는 경우(count==0)에 숫자를 하나 카운트해준다.
++다른 사람 코드
#include <stdio.h>
int arr[42];
int main(){
int x;
int ans = 0;
for(int i=0;i<10;i++){
scanf("%d",&x);
arr[x%42] = 1;
}
for(int i=0;i<42;i++)
ans += arr[i];
printf("%d",ans);
return 0;
}
출처: https://rujang.tistory.com/entry/%EB%B0%B1%EC%A4%80-3052%EB%B2%88-%EB%82%98%EB%A8%B8%EC%A7%80-CC
입력받은 후에 나머지 값에 따른 위치에 1을 저장해둔다.(중복되더라도 1을저장하므로 지장이 없다)
반복문으로 1이 있을 때마다 카운트하여 출력
4344 평균은 넘겠지
#include <stdio.h>
int main(void){
int inp, student, i,j, grade[1000];
double avg;
scanf("%d", &inp);
double result[inp];
for(i=0;i<inp;i++){
avg=0;
result[i]=0;
scanf("%d", &student);
for(j=0;j<student;j++){
scanf("%d", &grade[j]);
avg+=grade[j];
}
avg/=student;
for(j=0;j<student;j++){
if(avg<grade[j]){
result[i]++;
}
}
result[i]=(result[i]*100)/student;
printf("%.3lf%% \n", result[i]);
}
}
점수를 모두 합산하고 인원수만큼 나눈 나머지(==평균)을 구하여 결과에 저장한 후 출력
8958 OX퀴즈
#include <stdio.h>
#include <string.h>
//strlen()=문자열의 길이를 반환하는 함수, <string.h> 필요
int main(void){
int inp, i ,j, sum, score;
char suin[80];
scanf("%d", &inp);
for(i=0;i<inp;i++){
sum=0;
score=1;
scanf("%s", suin);
for(j=0;j<strlen(suin);j++){
if(suin[j]=='O'){
sum +=score;
score++;
}
if(suin[j]=='X'){
score=1;
}
}
printf("%d \n", sum);
}
}
참고: https://develop247.tistory.com/16
문자열을 저장할 수 있는 char형 배열에 ox를 입력받기
문자가 o인지 x인지를 구분하고, o이면 x가 나올 때까지 점점 증가하는 점수를 결과에 더해가며 저장, x가 등장하면 점수를 1로 초기화
위 과정을 배열의 길이만큼, 지정된 횟수만큼 반복하기
총 점수 출력
벨로그는 이렇게 쓰는게 맞는가 싶다. 내멋대로 쓰고 있는데 음~ 어차피 나 보는 용으로 쓰는 거니까 괜찮지 않나라는 생각이다.
글고 코드 하나씩 작성하면서 느낀 건데, 나는 for문을 참 많이 쓰는 것같다. 기본 문법만 아는 까닭인지 아니면 그런 문제들만 푸는 것인지, 죄다for문 아니면 if문이다.
다른 사람들이 작성한 코드도 봐가면서 새롭게 배울 필요가 있을 것 같다. 참고를 해서 문제를 풀고 공부하는 것과 배끼는 것 사이의 경계가 아직은 참 모호해서 꺼려지긴 하지만 이따구로 할거면 차라리 배껴도 보면서 시도는 할 필요가 있다고 판단된다..
for문을 이중 삼중 중첩하다보면 참 지저분한 것 같다.
오늘의 tmi: 마마마마라탕이 먹고싶다. 글고 양꼬치 먹고싶다..! 갑자기 먹고싶은게 참 많아졌다. 기어이 돼지가 되겠다는 꿈을 이루려나보다.
Author And Source
이 문제에 관하여(백준(baekjoon)-c언어 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@su96in43/백준baekjoon-c언어-정리-f665m5g4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)