Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백트래킹
- 동적계획법
- 브루트포스
- Algorithm
- DynamicProgramming
- 그리디
- BFS
- HashMap
- boj
- 프로그래머스
- 백준
- Network
- 네트워크
- 깊이우선탐색
- switch
- 해시
- Spring
- greedy
- 너비우선탐색
- 이분탐색
- Backtracking
- programmers
- broadcast
- DP
- 스프링
- 해시맵
- DFS
- dynamic programming
- 구현
- 알고리즘
Archives
- Today
- Total
옌의 로그
[Algorithm] 백준 - 문자열 잘라내기 (2866번) 본문
문제
[백준] 문자열 잘라내기
(Contest > Croatian Open Competition in Informatics > COCI 2010/2011 > Contest #3 4번)
사용 알고리즘
- 자료구조 (vector, set)
- 문자열
- 정렬
해결방법
- 위에서 아래로 읽어서 단어를 판별한다고 했으므로, 세로방향으로 문자열을 벡터에 저장한다
3 4
alfa
beta
zeta
- 문자열에 다음과 같이 주어지면 vec_alpha 벡터엔 아래와 같이 저장
[0] abz
[1] lee
[2] ftt
[3] aaa - 열 개수 - 1 만큼 루프를 돌면서, 벡터에 저장된 요소의 첫번째 값을 지운 단어를 set 집합에 넣어 중복을 방지하고, 완성된 set 집합 내의 요소가 열의 개수와 같은지를 확인한다. (같지 않으면 루프를 중단한다.)
- 원래 arr_alpha 배열에서 가장 윗줄을 지웠다면, vec_alpha 에 저장된 요소들은 첫번째 알파벳이 지워진 bz, ee, tt, aa 가 남게 된다. 이를 set 집합으로 만든 후, 원래 열개수인 4개가 맞는지 체크한다
- 한 줄 더 지우게 되면, [z, e, t, a] 가 남으므로 똑같이 4개가 되므로 count는 2가 되고 루프가 끝난다.
소스코드
사용언어 : c++
#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;
string arr_alpha[1000];
int main()
{
int R, C;
vector<string> vec_alpha;
cin >> R >> C;
for(int i=0; i<R; i++) {
cin >> arr_alpha[i];
}
for (int i=0; i<C; i++) {
string str = "";
for (int j=0; j<R; j++) {
str += arr_alpha[j][i];
}
vec_alpha.push_back(str);
}
int cnt;
for (cnt=0; cnt<R-1; cnt++) {
for (string& s : vec_alpha) {
s = s.substr(1);
}
set<string> s(vec_alpha.begin(), vec_alpha.end());
if (s.size() != C) {
break;
}
}
cout << cnt << endl;
return 0;
}
set<string> s(vec_alpha.begin(), vec_alpha.end());
* 벡터를 집합으로 변환하기 (벡터의 모든 요소를 집합 s로 복제)
* set<자료형> s(vec.begin(), vec.end());
한줄평
결론적으론 가로방향, 세로방향 배열을(벡터) 2개만든 셈이 된건데, 하나의 벡터로만 풀 수 있을지..?? 귀찮아서 시도해보진 않았다.
'스터디 > 알고리즘' 카테고리의 다른 글
[Algorithm] 백준 - 합이 0 (3151번) (1) | 2024.03.01 |
---|---|
[Algorithm] 백준 - 진우의 민트초코우유 (20208번) (1) | 2024.02.15 |
[Algorithm] 백준 - 트리의 기둥과 가지 (20924번) (0) | 2024.01.18 |
[Algorithm] 백준 - 파스칼 삼각형 (15489번) (1) | 2024.01.03 |
[Algorithm] 백준 - 감소하는 수 (1038번) (0) | 2023.10.26 |
Comments