[백준] 1000

YUN·2025년 8월 18일

C++

목록 보기
2/79

이 문제도 기본 입출력 문제이다 . 마찬가지로 <iostream>, <stdio.h>, <cstdio> 로 풀었다.

1. <iostream>

#include <iostream>
using namespace std;

int main() {
    int a;
    int b;
    cin>>a;
    cin>>b;
    cout<<a+b<<endl;
    return 0;
}

(1) 오답노트

😃 cin으로 라이브러리 버퍼에 저장된 값 읽을때 자료형

cin으로 라이브러리 버퍼에 저장된 값 읽을때 자료형은 내가 변수를 어떤 타입으로 선언했는지에 따라서 달라진다.

내가 위처럼 int a 로 변수를 선언했으므로 cin>>a 하면 버퍼에 있던 값이 자동으로 inta에 저장된다.

만약 내가 astring으로 선언했으면 cin>>a 하면 버퍼에 있던 값이 자동으로 string 으로 a에 저장된다.

😃 cin은 버퍼에서 공백, 개행, 탭 단위로 읽는다.

2. <stdio.h>

#include <stdio.h>

int main() {
    int a;
    int b;
    scanf("%d", &a);
    scanf("%d", &b);
    printf("%d", a+b);
    
    return 0;
}

(1) 오답노트

😃 scanf로 라이브러리 버퍼에 저장된 값 읽을때 자료형

scanf로 라이브러리 버퍼에 저장된 값 읽을때 자료형은 내가 변수를 어떤 타입으로 선언했는지에 따라 정해지고, 수의 진법은 어떤 서식지정자를 사용했냐에따라 달라진다.

EX) 10진수 int로 받고싶으면 형식 지정자는 %d, 변수 자료형은 int 로 해야한다.

내가 위처럼 int a 로 변수를 선언했고, 형식 지정자를 %d로 사용했으므로, scanf("%d", &a) 하면 버퍼에 있던 값이 자동으로 inta에 저장된다.

😃 scanf는 버퍼에서 공백, 개행, 탭 단위로 읽는다.

😃 scanf로 공백 단위로 입력 받기 - 방법 1

라이브러리 버퍼에 1 2가 있는 경우, 이를 공백 단위로 받기위해서는

scanf("%d %d", &a, &b);   // 공백/개행 구분 없이 정수 2개 읽기

이렇게 scanf() 한 줄로 토큰 단위로 읽을 수 있다.

😃 scanf로 공백 단위로 입력 받기 - 방법 2

라이브러리 버퍼에 1 2가 있는 경우, 이를 공백 단위로 받기위해서는

int a,b;
scanf("%d", &a); //공백전까지를 변수에 저장
scanf("%d", &b); //공백전까지를 변수에 저장

이렇게 scanf()토큰의 개수 만큼 써주는 방법이 있다.

😃 scanf는 인자로 입력을 저장할 변수의 주소를 넘겨줘야한다.

scanf("%d", &a);

이런식으로 주소 연산자를 통해 입력을 저장할 변수의 주소를 넘겨줘야한다

3. <cstdio>

#include <cstdio>
using namespace std;

int main() {
    int a,b;
    scanf("%d",&a);
    scanf("%d",&b);
    printf("%d",a+b);
    return 0;
}

(1) 오답노트

😃 scanf로 라이브러리 버퍼에 저장된 값 읽을때 자료형

scanf로 라이브러리 버퍼에 저장된 값 읽을때 자료형은 내가 변수를 어떤 타입으로 선언했는지, 형식 지정자를 무엇으로 썼는지에 따라 정해진다.

EX) int로 받고싶으면 형식 지정자는 %d, 변수 자료형은 int 로 해야한다.

내가 위처럼 int a 로 변수를 선언했고, 형식 지정자를 %d로 사용했으므로, scanf("%d", &a) 하면 버퍼에 있던 값이 자동으로 inta에 저장된다.

😃 scanf는 버퍼에서 공백 단위로 읽는다.

😃 scanf는 인자로 입력을 저장할 변수의 주소를 넘겨줘야한다.

4. 성능

역시 입출력은 <stdio.h>, <cstdio><iostream> 보다 메모리를 덜 사용한다. (성능이 좋다)

5. 느낀 점

(1) 코테에서 입력은 이미 라이브러리 버퍼에 저장되어있는 값으로 생각하자.

코테에서 입력은 이미 라이브러리 버퍼에 저장되어있는 값으로 생각하자.

어차피 입력 넣으면

[키보드에서 입력] 
        ↓
[운영체제(OS) 입력 버퍼]    ← OS가 관리
        ↓ (엔터 ↵ 누를 때까지 버퍼에 대기)
[C++ 라이브러리 입력 버퍼]  ← <iostream\> 라이브러리 내부의 C++ Stream Buffer 의미
        ↓ (cin >>, getline 등 호출 시)
[프로그램 변수]             ← 실제 변수에 저장

위와 같은 식으로 되니까.

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글