블램의 일상 IT카페

백준 10950번 [A+B-3] - 풀이(난 이거 틀렸다...) 본문

IT/알고리즘 문제 풀이

백준 10950번 [A+B-3] - 풀이(난 이거 틀렸다...)

ble_ram 2022. 11. 18. 11:50

문제.


 

내가 틀린 이유.(정확힌 삽질한 이유..)


: 예제를 입력 시 출력에서 저렇게 똑같이 나오게끔 하려고 오랜 시간을 들였다.

하지만 아무리 생각해도 방법이 없었다.

그 이유가 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

이렇게 나오는거라고 봐도 무방했다...

분명 예제값 그대로 구현하는 사람들도 있을거다.

(함 찾아봐야징 ㅎㅎ;;)


 

Comments