본문 바로가기

Algorithm/String

(138)
(C++) - 프로그래머스(연습문제) : 이상한 문자 만들기 programmers.co.kr/learn/courses/30/lessons/12930 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 문자열 처리 문제였습니다. 풀이방법 문자열을 계속 더해가다가 공백마다 소 대문자 변경여부를 확인해줍니다. Code #include using namespace std; string solution(string s) { string answer = ""; string tmp = ""; for(int i = 0 ; i < s.size(); i++){ tmp+=s[i]..
(C++) - 프로그래머스(연습문제) : 수박수박수박수박수박수? programmers.co.kr/learn/courses/30/lessons/12922 코딩테스트 연습 - 수박수박수박수박수박수? 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 programmers.co.kr 간단한 문자열 처리 문제였습니다. 풀이방법 1. n까지 loop를 돕니다. 2. i % 2 == 0이라면 "수"를 answer문자열 변수에 더해줍니다. i % 2 == 1이라면 "박"를 answer문자열 변수에 더해줍니다. Code #include #include using namespace std; string solution(int n..
(C++) - 백준(BOJ) 12813번 : 이진수 연산 www.acmicpc.net/problem/12813 12813번: 이진수 연산 총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 간단한 문자열 처리 문제였습니다. 풀이방법 1. 각 연산마다 함수를 선언해 구현했습니다. Code #include using namespace std; string andOp(string a,string b){ string tmp = ""; for(int i = 0; i < a.size(); i++){ if(a[i] == b[i] && a[i] == '1') tmp+="1"; else tmp += "0"; } return tmp; } s..
(C++) - 백준(BOJ) 4470번 : 줄번호 www.acmicpc.net/problem/4470 4470번: 줄번호 텍스트에서 줄을 입력받은 뒤, 줄 번호를 출력하는 프로그램을 작성하시오. www.acmicpc.net 공백을 포함하여 입력받는 문자열 처리 문제였습니다. 풀이방법 1. 줄 수를 입력받은 후 cin버퍼의 개행문자를 지우기 위해 ignore()해줍니다. C언어의 fflush(stdin)와 같은 기능을 하는 함수입니다. 2. 공백을 포함하여 입력받습니다. getline()을 이용하면 됩니다. 3. getline()으로 입력받은 후에는 cin의 오류비트를 clear()해줍니다. 4. 그 후 출력합니다. Code #include using namespace std; int main(){ int n; cin >> n; cin.ignore(); ..
(C++) - 백준(BOJ) 1120번 : 문자열 www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 문자열 비교를 적절히 구현하는 문제였습니다. 풀이방법 테스트 케이스를 통해 설명드리겠습니다. a문자열 : adaabc b문자열 : aababbc 일 때 a문자열 앞과 뒤에는 b와 같은 알파벳을 넣는것이 최적의 방법입니다. 따라서 굳이 직접 a문자열의 앞 또는 뒤에 알파벳을 추가한 뒤 비교할 필요가 없습니다. a문자열을 오른쪽으로 한칸씩 옮기며 b문자열과 비교해 차이의 최소..
(C++) - 백준(BOJ) 6996번 : 애너그램 www.acmicpc.net/problem/6996 6996번: 애너그램 첫째 줄에 테스트 케이스의 개수(> testCase; while(testCase--){ string a,b; cin >> a >> b; int cnt[26], cnt2[26]; int *alpha = getAlpha(a,cnt); int *alpha2 = getAlpha(b,cnt2); if(isAnagram(alpha,alpha2)) cout
(C++) - 백준(BOJ) 10174번 : 팰린드롬 www.acmicpc.net/problem/10174 10174번: 팰린드롬 팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다. 다음은 팰린드롬의 예시이다. Anna Harrah Arora Nat tan 9998999 123 www.acmicpc.net 풀이방법 1. 처음 줄 수에 대한 입력을 받은 후 '\n'가 cin의 버퍼에 남아있을 때 비워주기 위해 ignore함수를 호출해줍니다. 2. cin의 에러비트를 초기화해주고 문장을 입력받습니다. 3. 대문자가 있다면 소문자로 변환해줍니다. 4. 팰린드롬 여부를 검사한 후 출력합니다. Code #include using namespace std; string toLowerCase(s..
(C++) - 백준(BOJ) 13163번 : 닉네임에 갓 붙이기 www.acmicpc.net/problem/13163 13163번: 닉네임에 갓 붙이기 첫 번째 줄에는 닉네임의 수 N(1 ≤ N ≤ 100)이 주어진다. 두 번째 줄부터 N개의 줄에는 음절 단위로 쪼갠 닉네임이 주어진다. 각 줄은 알파벳 소문자와 공백만으로 이루어지며, 쪼갠 닉네임의 총 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 풀이방법 1. cin은 '\n'를 포함해 버퍼에 넣기 때문에 처음 n을 입력받은 후 cin.clear()로 버퍼를 비워줍니다. 2. 이후 사용하는 getline함수 또한 cin을 사용하기 때문에 ignore()함수를 이용해 개행문자를 무시해줍니다. 3. 이후 첫 음절을 god으로 바꾼 후 나머지 문자를 띄어쓰기 없이 붙인 후 출력하시면 됩니다. Code #i..