[C]백준 01.입출력과 사칙연산, 02.if문(2577, 10718, 10171, 10172, 1000, 1001, 10998, 1008, 10869, 10430, 2588/1330, 9498, 2753, 14681, 2884)
백준 2557
내코드
#include <stdio.h>
int main(){
printf("Hello World!");
return 0;
}
백준 10718
내코드
#include <stdio.h>
int main(){
printf("강한친구 대한육군\n");
printf("강한친구 대한육군\n");
return 0;
}
백준 10171
내코드
#include <stdio.h>
int main() {
printf("\\ /\\\n");
printf(" ) ( ')\n");
printf("( / )\n");
printf(" \\(__)|\n");
return 0;
}
c언어 특수문자 출력
특수문자 | 의미 |
\\ | 역슬래시(\)출력 |
\' | 작은따옴표(')출력 |
\" | 큰따옴표(")출력 |
\? | 물음표(?)출력 |
<출처:https://m.blog.naver.com/angelcorean/220804530449>
백준 10172
내코드
#include <stdio.h>
int main(){
printf("|\\_/|\n");
printf("|q p| /}\n");
printf("( 0 )\"\"\"\\\n");
printf("|\"^\"` |\n");
printf("||_/=\\\\__|");
return 0;
}
백준 1000
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d", a + b);
return 0;
}
백준 1001
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d", a - b);
return 0;
}
백준 10998
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d", a*b);
return 0;
}
백준 1008
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
double c;
scanf("%d", &a);
scanf("%d", &b);
c = (double)a / b;
printf("%.10lf", c);
return 0;
}
정수의 연산 결과를 실수로 출력하려면 명시적 자료형 변환(type casting)이 필요하다.
또한 상대호차가 10^(-9) 이하이기 위해서는 소숫점 9자리까지 출력해야한다. 난 그냥 %.10lf로 소숫점 10자리까지 출력했다.
오랜만에 c언어를 사용하다보니 데이터타입과 형식지정자가 기억이 안나서 다시 공부했다.
포맷 | 타입 | 자료형 | 사용상황 |
%d | 정수형 | int | int형의 정수를 출력하고 싶을때 |
%f | 실수형 | float | float형의 실수를 출력하고 싶을때 |
%ld | 정수형 | long | long형의 정수를 출력하고 싶을때 |
%lf | 실수형 | double | double형의 실수를 출력하고 싶을때 |
%lld | 정수형 | long long | long long형의 정수를 출력하고 싶을때 |
%llf | 실수형 | long double | long double형의 실수를 출력하고 싶을때 |
%c | 문자형 | char | char형의 문자를 출력하고 싶을때 |
%s | 문자열형 | char * | 문자열을 출력하고 싶을때 |
%x | 정수형 | 정수형 자료형 | 정수를 16진수로 출력하고 싶을때 |
%o | 정수형 | 정수형 자료형 | 정수를 8진수로 출력하고 싶을때 |
%e | 실수 지수형 | 실수형 자료형 | 실수를 지수표기법으로 표기하고 싶을때 |
백준 10869
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d\n",a+b);
printf("%d\n",a-b);
printf("%d\n",a*b);
printf("%d\n",a/b);
printf("%d\n",a%b);
return 0;
}
백준 10430
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
printf("%d\n", (a+b)%c);
printf("%d\n",((a%c) + (b%c))%c);
printf("%d\n",(a*b)%c);
printf("%d\n",((a%c)*(b%c))%c);
return 0;
}
백준 2588
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a;
int x,y,z;
int b;
scanf("%d",&a);
scanf("%d", &b);
x = b / 100;
y = (b - 100 * x) / 10;
z = (b - 100 * x - 10 * y);
printf("%d\n",a*z);
printf("%d\n",a*y);
printf("%d\n",a*x);
printf("%d\n",a*b);
return 0;
}
백준 1330
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a,b;
scanf("%d %d",&a,&b);
if(a>b){
printf(">");
}
else if(a<b){
printf("<");
}
else
printf("==");
return 0;
}
백준 9498
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a;
scanf("%d",&a);
if(a>=90){
printf("A");
}
else if(a>=80 && a<=89){
printf("B");
}
else if (a>=70 && a<=79){
printf("C");
}
else if (a>=60 && a<=69){
printf("D");
}
else
printf("F");
return 0;
}
백준 2753
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a;
scanf("%d", &a);
int x, y, z;
x = a % 4;
y = a % 100;
z = a % 400;
//x=0&&y!=0 |z=0
if ((x == 0 && y != 0) | z == 0) {
printf("1");
}
else
printf("0");
return 0;
}
백준 14681
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int x;
int y;
scanf("%d", &x);
scanf("%d", &y);
if (x > 0 && y > 0) {
printf("1");
}
else if (x < 0 && y > 0) {
printf("2");
}
else if (x < 0 && y < 0) {
printf("3");
}
else
printf("4");
return 0;
}
백준 2884
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int h;
int m;
scanf("%d %d", &h, &m);
int total;
total = h * 60 + m;
int final, finalh, finalm;
final = (total - 45);
if (final < 0) {
final += 1440;
}
finalh = final / 60;
finalm = final % 60;
printf("%d %d", finalh, finalm);
return 0;
}
풀이방법
주어진 시, 분을 분으로 변환하여 전체 분에서 45를 뺀 뒤 다시 시, 분 형태로 변환하는 방식으로 문제를 풀고자 했다. 전체 분이 45보다 큰 경우에는 별 문제가 생기지 않지만 전체 분이 45보다 작은 경우 출력 결과가 음수로 나오는 문제가 생겼다.
해당 문제를 모듈러 연산을 통해(final=(total-45)mod1440) 해결하고 싶었으나 final = (total-45)%1440을 하니 total-45가 음수이면 나머지도 음수가 나오는 것이었다. c언어에서 %연산의 결과는 음수도 가능하다고 하다. 예를들어 (-5)%(3)의 결과는 -2이고, (-5)%(-3)의 결과는 -2이며, 5%(-3)의 결과는 2이다.
아무튼 그래서 이문제에서는 입력값의 h가 24이상의 수가 입력되지 않을 것이기에 1440(=24*60)을 한번만 더해줘도 원래 의도했던 풀이방식인 모듈러 연산의 효과가 나왔다. 하지만 모듈러 연산의 효과가 제대로 나타나기 위해선 final = ((total - 45) % 1440) + 1440;
아래와 같이 코드를 고쳐야 할 것 같다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int h;
int m;
scanf("%d %d", &h, &m);
int total;
total = h * 60 + m;
int final, finalh, finalm;
final = (total - 45);
/*if (final < 0) {
final += 1440;
}
*/
if (final < 0) {
final = (final % 1440) + 1440;
}
finalh = final / 60;
finalm = final % 60;
printf("%d %d", finalh, finalm);
return 0;
}