[백준] 10953번: A+B - 6

Kim Yuhyeon·2022년 3월 3일
0

알고리즘 + 자료구조

목록 보기
4/161

https://www.acmicpc.net/problem/10953

문제

알고리즘 접근 방법

콤마(,)로 나누는 게 핵심이다.
파이썬처럼 생각하여 내장 함수 split 을 쓰고 싶었으나 다른 방법도 많았다.

  	scanf("%d \n",&a);
    // 입력방법 2 - scanf 
    // 특이점 
    // 1. 입력받은 데이터를 어떤 형식으로 변환할지 지정할 수 있다 
    //   ( ex : %d = 정수 , %f = 실수.. 물론 더 많다 자세한 건 다른 포스팅 참고 ) 
    // 2.주소 연산자 (&)를 사용한다. 입력받은 데이터를 이 기호 뒤의 변수에 저장하라는 의미
    // 3. 서식지정자를 이용해 여러개의 데이터를 한번에 받을 수도 있다.
    scanf("%d %f",&a,&c);
    // 위와 같이 받으면 순서대로 변수에 값이 할당된다 
    printf("%d \n", a/b);
    // 3
    // 출력방법 2 - printf();
    // 특이점 
    // 1. scanf와 같이 서식지정자를 활용해 출력할 데이터의 서식을 지정할 수 있다.
    // 2. 아래와 같이 다른 문자열과 함께 사용할 수도 있다 
    printf("%d를 %d으로 나눈 값은 %d입니다 \n",a,b,a/b);
    // 10를 3으로 나눈 값은 3입니다 
    // 3. 서식지정자 뒤에 \n을 써주면 줄바꿈 된다
    // 4. 아래와 같이 서식지정자를 활용해 출력 범위를 설정할 수 있다.

풀이

방법 1. string index 활용

#include <iostream>
#include <string>
using namespace std;

int main() {
    int t;
    cin >> t;
    for (int i = 0; i < t; i++) {
        string s;
        cin >> s;
        int a = s[0] - '0';
        int b = s[2] - '0';
        cout << a + b << '\n';
    }
    return 0;
}

방법 2. char 활용

#include <iostream>

using namespace std;

int main() {
    int t;
    int a, b; 
    char c;
    
    cin >> t;
    for (int i = 0; i < t; i++) {
        cin >> a >> c >> b;
        cout << a + b << '\n';
    }
    return 0;
}

방법 3. scanf 활용

어떤 형식에 따라 입출력을 받을 때는 <stdio.h> 인클루딩 후 scanf와 printf를 활용 해야겠다.

#include <stdio.h>

using namespace std;

int main(){
  int A, B, T;
  scanf("%d", &T);

  for(int i=0; i<T; i++){
      scanf("%d,%d", &A, &B);
      printf("%d\n", A+B);
  }
 
  return 0;
}

정리

cin과 cout만 써버릇 해서, scanf와 printf의 중요성을 몰랐는데
후자가 더 빠르고 위와 같이 형식이 있는 입출력에서는 훨씬 간편하다는 것을 알았다.
기억 해보자고

💡 참고 포스팅

코집사님 블로그
Tazes님 블로그
식빵맘님 블로그
TakeKnowldge님 블로그

0개의 댓글