2022. 6. 19. 02:18ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/4470
4470번: 줄번호
텍스트에서 줄을 입력받은 뒤, 줄 번호를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
접근 방법 - 문자열 입출력의 기본 문제
백준의 4470번 문제는 기본적인 문자열 입출력을 다루고 있는 문제이다.
해당 문제는, 입력받은 문자열들을 줄번호를 달아둔 채로 출력하여 해결해야 하는 문제이다.
이때, 문자열을 입력받을 시 공백을 포함하여 입력받아야 하는데 이를 위해선 아래의 구문을 사용하면 된다.
getline(cin, st);
// getline을 이용하면 공백을 포함하여 입력받을 수 있다.
또한, 이 문제에선 숫자와 문자열을 함께 입력받고 있는데, 한꺼번에 입력을 받지 않고 중간에 아래의 구문을 수행해야 원활한 입력이 가능하다.
cin.ignore();
// 입력 버퍼를 비운다. 입력을 연이어 받지 않고 이 구문을 사이에 두고 입력을 받도록 한다.
위 2가지를 유의하며 코드를 작성하면, 문제를 해결하는 데에 큰 어려움은 없을 것으로 예상된다.
만일 정답처럼 출력이 용이하게 되지 않았다면, 위 구문을 한번 참고해보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 행의 개수(n)를 입력받는다.
2) 문자열을 입력받기 이전에 입력 버퍼를 비워주도록 한다. (cin.ignore() 함수 실행)
3) 반복문을 통하여 문자열(st)을 입력받도록 한다. 이때, 공백을 포함하여 입력을 받도록 해야 한다.
4) 3)에서 문자열을 하나씩 입력받는 대로, 행 번호와 함께 즉시 문자열을 출력하도록 한다.
5) 출력이 모두 끝났다면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;
//백준 4470번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
string st;
cin.ignore();
for (int i = 0; i < n; i++) {
getline(cin, st);
cout << i + 1 << ". " << st << endl;
}
}
제출 결과
(2022.06.13 백준 4470번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 10769번 행복한지 슬픈지 (C++/cpp) (0) | 2022.06.19 |
---|---|
[백준 BOJ] 16394번 홍익대학교 (C++/cpp) (0) | 2022.06.19 |
[백준 BOJ] 2960번 에라토스테네스의 체 (C++/cpp) (0) | 2022.06.18 |
[백준 BOJ] 1037번 약수 (C++/cpp) (0) | 2022.06.18 |
[백준 BOJ] 3040번 백설 공주와 일곱 난쟁이 (C++/cpp) (0) | 2022.06.17 |