본문 바로가기

Algorithm/String

(93)
(C++) - 백준(BOJ) 1439번 : 뒤집기 답 www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 풀이방법 1. 연속하는 영역의 개수를 세었습니다. 1-1. 연속하는 '0'영역의 개수 : zeroArea변수에 저장 1-2. 연속하는 '1'영역의 개수 : oneArea변수에 저장 2. 두 영역의 개수 중 영역의 개수가 적은것을 출력했습니다. Code #include using namespace std; string s; int zeroCnt, oneCnt; int main()..
(C++) - 백준(BOJ) 5525번 : IOIOI 답 www.acmicpc.net/problem/5525 5525번: IOIOI 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000) www.acmicpc.net 풀이방법 n이 1인 경우에 IOI는 1 IOIOI는 2 를 답으로 출력해야합니다. 따라서 OI를 한 set으로 계속 2씩 증가하며 이를 하나로 치고 개수를 세줬을때 n과 같으면 answer가 1씩 증가합니다. Code #include #include using namespace std; int n,m,ans=0; string word; //IOI 1 //IOIOI 2 //I한번나오면 n개수만큼 OI가 나올 때마다 답 1증가 int mai..
(Python) - 백준(BOJ) 1541번 : 잃어버린 괄호 답 www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문자열을 parsing하고 수학적으로 최소값을 구하는 문제였습니다. 풀이방법 1. '-'를 기준으로 식들을 나눈다. 문제의 예제를 예시) 55-50+40 인 경우 [55,50+40]이 됩니다. 2. 처음 식 ('-'로 나눈 후 배열의 첫번째 원소)은 '+'가 포함되어 있을 수 있으니 '+'를 기준으로 split한 뒤 나온 배열의 모든 원소를 더해 처음 식의 결과 값을 구합니다. 그 후 답 변수인 ans의 ..
(C++) - 백준(BOJ) 4949번 : 균형잡힌 세상 답 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단 www.acmicpc.net stack을 사용하여 문자열을 다뤄보는 구현문제였습니다. Code: #include #include #include using namespace std; string getBracketStr(string sentance){ string tmp=""; for(int i = 0; i
(C++) - 백준(BOJ) 2562번 : ACM 호텔 답 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 www.acmicpc.net int와 문자열의 형변환하는 것을 잘 처리해야되는 문제였습니다. 풀이방법 : 1.호텔 방 호수 : (n-1)/h + 1 //해당 값이 10보다 적을때는 '0'붙여줘야 합니다. 2.호텔 방 층수 : n%h //해당 값이 0이 나오면 가장 위층인 h로 층을 설정해야 합니다. Code : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include ..
(C++) - 백준(BOJ) 1764번 : 듣보잡 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. www.acmicpc.net 풀이 1 : 중복을 제거하고 사전순으로 정렬해주는 set이라는 자료구조를 사용했습니다. 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 #include #include #include ..
(C++) - 백준(BOJ)코딩 10769번 : 행복한지 슬픈지 답 www.acmicpc.net/problem/10769 10769번: 행복한지 슬픈지 승엽이는 자신의 감정을 표현하기 위해서 종종 문자 메시지에 이모티콘을 넣어 보내곤 한다. 승엽이가 보내는 이모티콘은 세 개의 문자가 붙어있는 구조로 이루어져 있으며, 행복한 얼굴을 나 www.acmicpc.net 간단한 문자열 처리 문제였습니다. Code #include #include using namespace std; int main() { string k; int happy = 0, sad = 0; getline(cin, k); for (int i = 0; i < k.size() - 2; i++) { if (k[i] == ':' && k[i + 1] == '-') { if (k[i + 2] == ')') happy..
(C++) - 백준(BOJ)코딩 2386번 : 도비의 영어 공부 www.acmicpc.net/problem/2386 2386번: 도비의 영어 공부 출력의 각 줄은 입력으로 주어진 소문자와 그 소문자 알파벳이 나타난 횟수로 이루어진다. 이때 문장에서 해당 알파벳이 소문자로 나타나던 대문자로 나타나던 모두 세야 한다. www.acmicpc.net 간단한 알파벳 세기(문자열 처리) 문제였습니다. 풀이방법 getline으로 한 줄 씩 입력 받고 필요한 알파벳 개수를 세줍니다. Code #include #include using namespace std; int main() { char c; string k; while (1) { int cnt = 0; cin >> c; if (c == '#') { return 0; } getline(cin, k); for (int i = 0..