** 이 글을 읽음에 앞서 포스팅 된 소스가 100% 정답은 아님을 밝힙니다.
더욱 유능한 분께서 클린 / 최적의 소스를 짜셨을 가능성이 높습니다.
기록용으로 남기며, 참고만 부탁드립니다.
** 백준 알고리즘은 직접 풀이를 해보시는 것을 권장합니다.
● 문제
난이도[티어] : 실버 5
백준 알고리즘 1343번 문제 폴리오미노
https://www.acmicpc.net/problem/1343
● 풀이 방법
문자열을 입력받아서 XXXX와 XX를 먼저 찾아서 변환작업을 수행.
이후 문자열에 X가 남아있다면 -1를 표기하면 되는 간단한 문제.
● 소스 코드
#include <iostream>
#include <string>
int main(void)
{
std::string str;
std::cin >> str;
// 1) 입력받은 문자열에서 XXXX를 찾아 AAAA로 변경
while(str.find("XXXX") != std::string::npos)
str.replace(str.find("XXXX"),4,"AAAA");
// 2) 1)진행 후 남은 문자열에서 XX를 찾아 BB로 변경
while(str.find("XX") != std::string::npos)
str.replace(str.find("XX"),2,"BB");
// 3) 1),2)번 진행 후 남은 문자열에 X가 있다면..?
if(str.find("X") != std::string::npos)
str = "-1";
std::cout << str << std::endl;
return 0;
}
해당 문제에서 사용한 키 함수는 아래와 같다.
find()
#include <string>
std::string str;
str.find("찾을 값");
//만약 str안에 "찾을 값" 이 존재하지 않으면 std::string::npos 반환
replace()
#include <string>
std::string str;
str.replace("바뀔 값",length,"바꿀 값");
● 결과
** 코드 길이가 상이 할 수 있습니다! 그러나 내용물은 같습니다.
이유) 주석 및 더미 소스 유무
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘 C/C++] 14916번 문제 풀이 : 거스름돈 (0) | 2024.03.13 |
---|---|
[백준 알고리즘 C/C++] 2217번 문제 풀이 : 로프 (0) | 2024.03.13 |
[백준 알고리즘 C/C++] 1005번 문제 풀이 : ACM Craft (0) | 2024.03.11 |
[백준 알고리즘 C/C++] 1004번 문제 풀이 : 어린 왕자 (0) | 2024.03.11 |
[백준 알고리즘 C/C++] 1003번 문제 풀이 : 피보나치 함수 (0) | 2024.03.11 |