[백준 BOJ] 25840번 Sharing Birthdays (C++/cpp)
2024. 3. 9. 16:10ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/25840
접근 방법 - 벡터를 활용한 중복 여부 확인 문제
백준의 25840번 문제는 벡터를 활용하여 요소 중복 여부를 확인하며 해결할 수 있는 문제이다.
해당 문제는, 입력으로 주어지는 생일 값들에 대하여 서로 다른 생일의 가짓수를 구하여 출력해야 하는 문제이다.
여러 방법들이 있겠지만, 필자는 벡터의 find() 함수를 주로 사용하여 이 문제를 해결하였다.
find() 함수를 통해 벡터 요소 삽입을 제어하고, 최종적으로 벡터의 크기를 출력하는 식으로 코드를 적어나갔다.
간단하지만 아래에 설명을 추가로 적으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 입력으로 주어지는 생일의 개수(n)를 입력받는다.
2) 서로 다른 생일값을 저장할 벡터 v를 미리 선언해 둔다.
3) n의 크기만큼, 반복문을 실행하여 아래의 연산을 수행한다.
- 생일(st)을 하나씩 입력받는다.
- find() 함수를 통하여, 현재의 st 값이 v 요소들 중에 존재하는지 탐색한다.
만약 존재하지 않는다면, v의 요소로 추가하도록 한다.
4) 위 연산을 모두 끝내었다면, 현재 v의 크기를 출력한 뒤 실행 종료한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <vector>
#include <algorithm>
#define endl '\n'
using namespace std;
//백준 25840번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
cin.ignore();
vector<string> v;
for (int i = 0; i < n; i++) {
string st;
cin >> st;
if (find(v.begin(), v.end(), st) == v.end()) {
v.push_back(st);
}
}
cout << v.size() << endl;
}
제출 결과
(2023.11.21 백준 25840번 문제 제출 결과)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 1244번 스위치 켜고 끄기 (C++/cpp) (0) | 2024.03.10 |
---|---|
[백준 BOJ] 24082번 立方体 (Cube) (C++/cpp) (0) | 2024.03.09 |
[백준 BOJ] 26531번 Simple Sum (C++/cpp) (0) | 2024.03.07 |
[백준 BOJ] 10709번 기상캐스터 (C++/cpp) (0) | 2024.03.07 |
[백준 BOJ] 11257번 IT Passport Examination (C++/cpp) (1) | 2024.03.06 |