[백준 BOJ] 4470번 줄번호 (C++/cpp)

2022. 6. 19. 02:18PS (Program Solving)/BOJ (백준)

문제 설명

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

 

4470번: 줄번호

텍스트에서 줄을 입력받은 뒤, 줄 번호를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

백준 BOJ 4470번 줄번호 문제 사진

 

접근 방법 - 문자열 입출력의 기본 문제

백준의 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;
	}
}

 

제출 결과

백준 BOJ 4470번 줄번호 문제 C++ 제출 결과

(2022.06.13 백준 4470번 문제 제출 결과)

반응형