백준 10950번 [A+B-3] - 풀이(난 이거 틀렸다...)
문제.
내가 틀린 이유.(정확힌 삽질한 이유..)
: 예제를 입력 시 출력에서 저렇게 똑같이 나오게끔 하려고 오랜 시간을 들였다.
하지만 아무리 생각해도 방법이 없었다.
그 이유가 for문을 사용한다고 해보자.
for{}문 안에 scanf로 A,B두수를 입력받고 printf문을 쓰면 입력값 뒤에 바로 출력값 이게 반복되는 건데...
난 그럼 안된다 생각하고 for문을 두개써보기도 하는 등 해봤는데 안됐다.
그 이유도 대충 자세힌 모르겠는데..첫번째 for문에서 scanf로 A,B 두 수 입력 받고
그 밑줄에 sum(변수를 만듬) 변수를 A+B가 되게끔해서
총 3번 반복 한다고 하면
scanf를 1번 반복할때 sum에 첫번째 입력 합이 들어가고
두번째엔 두번째 값, 세번째엔 세번째값 해서
그 밑에 두번째 for문에 printf문을 써서 저장된 3개의 sum을 출력시키겠다는 생각이였다.
그런데 이상하게도 마지막 입력 받은 수의 합만 출력이 됐다.
그 내가 이렇게 구상한 코드는 다음과 같다.
#include <stdio.h>
int main() {
int T=0,A=0,B=0;
int sum= A+B;
scanf("%d", &T);
for(int i=1; i<=T; i++){
scanf("%d %d", &A, &B);
sum = A+B;
}
for(int i=1; i<=T; i++){
printf("%d\n",sum);
}
return 0;
}
이 코드가 잘못된 이유는 저 sum에 이유가 있다.
아무리 입력 T값이 3개든 5든 sum은 한번 반복했을때 첫번째 합이 들어간다.
그 다음 두번째 합이 들어갈땐? sum은 문자열이 아니라 그 다음값으로 초기화 되는 것이였다.
그래서 sum의 T만큼의 AB입력 합이 여러개가 출력이 안되는 것이였다.
(참 단순한 생각이였다.. ㅋㅋ;;)
그래서 저 코드의 실행값은
이러하다 출력값이 따로 나오지만 값은 마지막 값이다 그 이유도 아까 말했듯.
sum변수가 여러개가 되지않고 한번 반복할때마다 전값이 현재입력값으로 초기화된다...
*그럼 대체 어케 풀어야되는건데?
백준 문제 특성 상 입력은 무시하는 것 같다.
한마디로 입력값은 내 자유다 뭘 넣든 조건 0<A<10 이런 것들만 맞으면 자유다.
그 즉슨 출력만 신경쓰면 된다.
그래서 답이 이렇게 된다.
풀이.
#include <stdio.h>
int main() {
int T=0,A=0,B=0;
scanf("%d", &T);
for(int i=1; i<=T; i++){
scanf("%d %d", &A, &B);
int sum = A+B;
printf("%d\n", sum);
}
return 0;
}
거짓말 아니라 내가 출력값이 예제그대로 형식에 맞춰나와야되는 줄 알아서
처음 구상했던 식인데도 그냥 무시했다.(그냥 한번 해볼껄...)
이럴경우 답은 이렇게 출력된다.
보시다 싶이
노란색 <- 입력 T
빨간색 <- 출력값
예제와는 출력 모양이 다르다..
근데 사실상 입력값을 무시한다고 하면
2
7
8
이렇게 나오는거라고 봐도 무방했다...
분명 예제값 그대로 구현하는 사람들도 있을거다.
(함 찾아봐야징 ㅎㅎ;;)