반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- VS
- 그리디
- 친절한 설명
- 구현
- 설명
- 백준
- 심화1
- 꾸준히
- 문자열
- 정리
- c언어
- Python
- C Programming
- HTML
- 입문
- 알고리즘
- C 언어
- C
- Implemention
- Baekjoon
- 파이썬
- Beakjoon
- implement
- greedy
- 문제풀이
- 10807
- 초보
- 코드엔진
- CSS
- 10926
Archives
- Today
- Total
안경잡이 구루루
백준 2588 ( 곱셈 ) [ C programming ] (오답노트) 본문
C언어(C programming)/문제풀이(백준,BaekJoon)
백준 2588 ( 곱셈 ) [ C programming ] (오답노트)
구루루(gururu) 2020. 5. 13. 01:04반응형
문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
나 (오답)
#include <stdio.h>
int main(){
int a, b[3];
scanf("%d%d", &a, &b);
int num1 = a * b[0];
int num2 = a * b[1];
int num3 = a * b[2];
int sum = num1 + num2 * 1 +num3 * 100;
printf("%d\n", num1);
printf("%d\n", num2);
printf("%d\n", num3);
printf("%d", sum);
return 0;
}
최근 배열을과 scanf 함수를 배워서 활용해보고자 했지만 틀렸다.
나는 &b로 입력값을 받을 때 그 입력값을 b[0], b[1], b[2]로 나눠져서 들어간다고 생각하고 풀었지만 잘못된 생각이다.
b[0]에만 값이 들어가고 나머지는 값이 없어서 출력했을 때 이상한 결과가 나왔다.
이때 visul studio(비쥬얼 스튜디오) 는 오버플로우가 일어나는걸 방지하기 위해 scanf 사용을 못하게 했다.
나(정답):
#include <stdio.h>
int main() {
int a, b,num1, num2, num3;
scanf_s("%d", &a, sizeof(a));
scanf_s("%d", &b, sizeof(b));
num1 = b / 100;
num2 = (b / 10) % 10;
num3 = b % 10;
printf("%d\n", a * num3);
printf("%d\n", a * num2);
printf("%d\n", a * num1);
printf("%d", a * b);
return 0;
}
완성된 코드는 위와 같다.
#include <stdio.h>
int main() {
int a, b,num1, num2, num3;
우선 값을 받을 변수들의 자료형을 선언해 준다.
scanf_s("%d", &a);
scanf_s("%d", &b);
scanf 가 안되는 관계로 대신에 scanf_s를 사용한다
num1 = b / 100;
num2 = (b / 10) % 10;
num3 = b % 10;
입력값으로 받은 b를 각 자리수에 따라서 나눈다
printf("%d\n", a * num3);
printf("%d\n", a * num2);
printf("%d\n", a * num1);
printf("%d", a * b);
return 0;
}
이제 각 자리수에 맞춰서 a 와 곱하고 출력한다. 이때 최종곱은 a*b로 출력한다.
다른사람:
#include <stdio.h>
int main() {
int inp1, inp2;
int out1, out2, out3, res;
scanf("%d %d", &inp1, &inp2);
out1 = inp1 * ((inp2%100)%10);
out2 = inp1 * ((inp2%100)/10);
out3 = inp1 * (inp2/100);
res = inp1 * inp2;
printf("%d\n%d\n%d\n%d", out1, out2, out3, res);
}
완성된 코드는 위와 같다.
입력값을 받는 방식은 같아 생략
out1 = inp1 * ((inp2%100)%10);
out2 = inp1 * ((inp2%100)/10);
out3 = inp1 * (inp2/100);
res = inp1 * inp2;
printf("%d\n%d\n%d\n%d", out1, out2, out3, res);
}
나처럼 자리수를 구한 후 변수에 집어넣지 않고 자리수를 계산하여 처음입력값과의 최종값을 변수에 넣었다.
출력할때 제어코드 \n 을 활용해서 한줄에 한번에 나타냈다.
반응형
'C언어(C programming) > 문제풀이(백준,BaekJoon)' 카테고리의 다른 글
백준 2753 ( 윤년 ) [C programming ] (0) | 2020.05.14 |
---|---|
백준 1330 ( 두 수 비교하기 )[ C programming ] (0) | 2020.05.14 |
백준 10430 ( 나머지 ) [ C programming ] (0) | 2020.05.09 |
백준 10869 ( 사칙연산 ) [ C programming ] (0) | 2020.05.09 |
백준 1008( A/B ) [ C programming ] (0) | 2020.05.08 |