2022. 12. 26. 12:35ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/10821
10821번: 정수의 개수
숫자와 콤마로만 이루어진 문자열 S가 주어진다. 이때, S에 포함되어있는 정수의 개수를 구하는 프로그램을 작성하시오. S의 첫 문자와 마지막 문자는 항상 숫자이고, 콤마는 연속해서 주어지지
www.acmicpc.net
접근 방법 - 문자열을 이용한 기본적인 연산 문제
백준의 10821번 문제는 문자열에 있어 기본적인 원리를 이용하여 해결해야 하는 문제이다.
해당 문제는, 문자열로 주어지는 입력값에 대해 숫자가 총 몇 개 포함되어있는지를 구하여 출력해야 하는 문제이다.
설명을 시작하기 전에, 필자는 편법 아닌 편법을 이용하여 문제를 해결하였다는 점을 미리 알린다.
따라서, 파싱을 이용한 문제 해결법을 원하고 들어왔다면 즉시 뒤로 가기를 눌러주길 바란다.
필자의 경우에는, 쉼표로만 숫자들을 나누고 있다는 점을 이용하여 해당 문제를 해결할 수 있었다.
혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 설명과 코드를 참고해보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 문자열(st)을 입력받는다.
2) 숫자의 개수를 카운팅 할 변수 count를 0으로 초기화하여 선언한다.
3) st의 길이만큼 반복문을 실행하여, 아래의 연산을 취한다.
- 오로지 쉼표로만 숫자들을 구분하고 있으며, 쉼표와 숫자만으로 해당 문자열(st)을 구성하고 있다.
따라서 현재 탐색값이 쉼표라면 숫자 하나가 완전히 등장했음을 의미하기 때문에, 이 경우엔 count에 1을 더하도록 한다.
4) 반복문의 실행이 모두 완료되었다면, 마지막 숫자도 개수에 포함해야 하기 때문에 마지막으로 count에 1을 더한다.
5) 최종적으로 저장된 count의 값을 출력한 뒤, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;
//백준 10821번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
string st;
cin >> st;
int count = 0;
for (int i = 0; i < st.length(); i++) {
if (st[i] == ',') { count++; }
}
count++;
cout << count << endl;
}
제출 결과
(2022.12.03 백준 10821번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 12005번 Diamond Collector (Bronze) (C++/cpp) (0) | 2022.12.30 |
---|---|
[백준 BOJ] 10886번 0 = not cute / 1 = cute (C++/cpp) (0) | 2022.12.26 |
[백준 BOJ] 23278번 영화 평가 (C++/cpp) (0) | 2022.12.15 |
[백준 BOJ] 25314번 코딩은 체육과목입니다 (C++/cpp) (0) | 2022.12.12 |
[백준 BOJ] 5717번 상근이의 친구들 (C++/cpp) (0) | 2022.12.06 |