문제
https://www.acmicpc.net/problem/2902
풀이
해석
문제 자체의 난이도도 브론즈2 수준으로 그닥 어렵진 않지만 이 문제를 포스팅하는 이유는 C++로 문자열을 잘라내는 것이 Python만큼 간단하게 되지 않기 때문이다. Python으로 이 문제를 푼다면 list(str.split('-'))으로 문자열을 분리해서 리스트로 묶어내고 각 첫 글자만 모아 출력하면 간단히 끝난다. 하지만 C++에서는 이렇게 문자열을 Split해주는 메서드가 지원되지 않기에 따로 구현을 해주어야 한다.
위 코드에서는 따로 부분 문자열을 추출하지 않고 구분자(Delimeter: '-')의 위치를 찾아 이를 기준으로 답을 도출해 내었다.
만약 부분 문자열을 추출한다면 따로 <string>헤더의 string::substr()와 string::find() 함수들을 조합하여 반복문을 돌려서 구해야 한다.
<string>의 함수들을 사용한다면 위처럼 하며, 찾아보니 <sstream>의 stringstream이나 istringstream 객체를 이용하는 방법들이 있는데 이는 C++ 자체의 입출력 관련 개념들과 객체들에 대한 이해가 필요로 해보여 일단은 내가 잘 알고 잘 쓸 수 있는 <string>쪽의 메서드 들로 구현해보았다.
언젠가 입출력, 버퍼, 스트림에 대한 개념정리를 해야할 듯 싶다.
'Koala - 7기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 12789번 도키도키 간식드리미 (2) | 2022.08.14 |
---|---|
[백준/Python] 2566 최댓값 (2) | 2022.08.14 |
[백준/python] 6996번 애너그램 (0) | 2022.08.14 |
[백준/C++] 15657 N과 M(8) (0) | 2022.08.13 |
[백준/python] 2566번 최댓값 (0) | 2022.08.09 |