본문 바로가기
CODING/BAEKJOON

백준 C언어 1단계 입출력과 사칙연산 소스코드 : 2557, 10718, 10171, 10172, 1000, 1001, 10998, 1008, 10869, 10430, 2588번

by pharmerci 2021. 12. 15.
728x90

C언어 복습 겸 파이썬 공부하고 싶어서 시작해보는 백준 문제풀이!

1단계를 복습삼아 풀었는데, 대충 코드 짜서 오답을 좀 많이 냈다.

2단계는 파이썬으로 풀어보려 한다.(고ㅏ연)

 

아래 소스코드 답 적혀있으니까 풀고 보시길 추천!

 

 

 

 


2557

Hello World!를 출력하는 단순한 문제

 

머 그냥 printf 써서 출력해주면 되겠죠?

 

 

 

 


10718

강한친구 대한육군

강한친구 대한육군

 

이렇게 출력하는 소스코드를 짜야합니당

 

 

개행문자를 출력해주는(=엔터의 효과를 주는) \n을 입력해주면 됩니다.

 

 

 

 


10171

 

고양이같이 생겼다고 주장하는 희한한 문자들을 출력해야 한다.

\    /\
 )  ( ')
(  /  )
 \(__)|

이렇게 생김 ㅋㅋㅋㅋㅋ

 

 

여기서 처음 알게 된 사실은..!

 

\ <- 이걸 출력하려면 \\ <- 이런식으로 두번 입력해야 \ 한개가 출력된다는 것이어따..!

 

띄어쓰기가 지저분해서 좀 걸렸지맘ㅇ 암튼 풀었다.

 

 

 

 


10172

 

이것도 10171번에 이어서

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

 

귀여운 강아지를..? 출력하는 문제이다.

 

 

여기서 또 처음 알게된건

 

큰따옴표를 출력하고 싶으면 그 출력하고싶은 따옴표 앞에 \를 붙여서 "가 문법적인 일을 못하도록 해야한다. 는 것이다.

 

 

 

 


1000, 1001, 10998, 1008

 

사칙연산 문제라 묶어서 보자

 

 

더하기는 scanf로 정수 두개 받아서 더한 값을 정수형으로 출력하면 된다.

 

 

 

 

 

빼기도 프린트값만 달라지고 다 똑같음.

 

 

 

 

 

곱셈도...

 

 

 

 

 

나누기가 문제인데, 정수 두개를 받고 실제 답과 출력값의 오차가 10의 -9승 이하여야 한다.

이게 무슨 뜻이냐면 지금까지 했던것처럼 프린트를 할때 정수형으로 출력하면 안된다는 뜻이다.

 

만약 정수형으로 printf("%d", a/b);

이렇게 출력을 해버리면 a/b의 몫이 나와버리기 때문에 오차범위가 클 것이다.

 

그러니까 a/b값을 double형으로 바꿔서 소수점까지 나눠지도록 해야한다.

그러면 자료형이 %lf가 될 것이다.

 

그리고 오차가 10의 -9승 이하여야 하니까 9번째자리까지 나눠서 출력하겠다는 뜻으로

%와 lf 사이에 .9를 추가해준다.

 

 

 

 


10869

이 문제는 덧셈 뺄셈 곱셈 몫 나누기를 모두 출력하는 문제였다.

 

 

몫을 출력하는 것이므로 %d 자료형으로 단순히 나누기 해주면 된다.

나머지를 출력하는 연산자는 %이다.

 

그러니까 5랑 3을 입력받으면

5/3 = 1

5%3 = 2

 

이런 결과값이 나오겠죠?

 

 

 

 


10430

세 수를 받아서 각각의 식을 출력하는 문제인데

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

이런식으로!

 

실제로 같다! 신기함.

 

 

아까 한거랑 비슷해서..

 

 

 

 


2588

이문제는

1, 2를 입력받고 3,4,5,6을 출력하는 문제이다.

 

3은 1에다가 2의 1의자리를 곱하는 것

4는 1에다가 2의 10의자리를 곱하는 것

5는 1에다가 2의 100의자리를 곱하는 것

6은 1*2

 

이렇게 판단할 수 있다.

 

 

모든 사람이 이렇게 풀 것 같지는 않지만 나는 어떻게 풀었느냐!

 

일단 정수 a, e를 받고 나서

e를 숫자 세개로 쪼개는 작업을 거쳤다.

 

예를 들어 391이 e의 값이라면

3, 9, 1을 각각 b, c, d 에 저장하는 작업

 

먼저 백의자리는 그냥 100으로 나눈 값의 몫이니까 b는 그렇게 쪼갰고,

 

c같은 경우에는 먼저 원래 e의 값을 10으로 나눈다. 그러면 391이 39가 되어있을 것이다. 왜냐하면 몫이 나오니까!

그다음에 아까 구해낸 b에다가 10을 곱한 값을 가져와서 나머지를 구한다.

밑줄친 값은 30이 될테니까 39%30 = 9!

이런식으로 c를 쪼갰다. 쉬운 방법이 있을 것 같은데 난 멍청해..

 

마지막으로 d는 원래 값에서 100으로 나눈 나머지값에 또 10으로 나눈 나머지값으로 정했다.

391을 100으로 나눈 나머지값은 91, 91을 10으로 나눈 나머지값은 1 이런식으로!

 

암튼 이렇게 b, c, d로 다 쪼개고 프린트는 다 할 수 있으니까!

 

 

 

 

 

 

728x90