문자열

20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 자세한 풀이과정은 다음 링크에 걸어놓았습니다. 물론 파이썬으로 해결해서 코드가 조금 더 간결하고 쉽게 해결했지만, 전체적인 흐름은 똑같습니다. 1. 주어진 문자열을 반복문을 돌려서 해당 문자열이 몇 번째 인덱스에 나왔는지 저장을 합니다. 2. 인덱스 정보가 담긴 문자열 배열을 알파벳의 개수(26)만큼 반복문을 돌립니다. 3. 배열의 크기가 주어진 개수보다 작을 경우 continue 개수를 포함할 경우 인덱스 간에 거리를 구해서 min, max를 업데이트 합니다..
25240번: 가희와 파일 탐색기 2 Q개의 질문에 대해, 연산이 성공하면 1을 실패하면 0을 출력해 주세요. 각 질문에 대한 답은 한 줄에 하나씩 출력해 주세요. www.acmicpc.net 풀이 과정 이 문제는 정말 맞왜틀을 외치면서 풀었던 문제인 거 같다... 7번이나 틀렸던 문제😂😂 문제를 제대로 읽지 않아서 중요한 부분을 놓쳤다. " 유저가 속한 그룹들에 대한 정보에 USER_NAME이 주어지지 않더라도 그룹 이름이 USER_NAME인 그룹에 속함에 주의하세요." 유저에 대한 정보의 개수 U만큼 user_name과 user_group이 입력되는데, user_name이 동일한 이름을 가진 그룹에 속하다는 것을 놓쳐버렸다.. 🤦‍♂️🤦‍♂️ 1. 필자는 그룹에 어떤 유저가 포함되어 있는지, 그룹 이..
2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 풀이 방법 1. 알고리즘 분류는 스택으로 되어있었지만 해당 문제를 문자열로 해결하고 싶어서 스택을 이용하지 않았다. 2. '(' 과 ')'의 각각의 개수가 다를 경우 또는 '[' 과 ']'의 각각의 개수가 다를 경우 0을 반환해주었다. (올바른 괄호 x) 3. '()' 는 2, '[]'는 3이기에 해당 값들을 replace를 통해서 '+2','+3'으로 바꿔주었다. 4. 3번을 처리해주고 나머지 '(' ,')'은 각각 '+(', ')*2'로 처리해주었다. 5...
· Language/C++
문제 ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 첫째 줄에 그룹 단어의 개수를 출력한다. 소스 코드 알파벳 위치 값을 갖는 arr와 입력 값을 string으로 받았다. 그리고 단어에 대한 flag를 설정해줬다. 입력받은 string의 첫 번째 index부터 확인하여, 해당 알파벳에 대한 위치 값을 증가시킨다. 다음 알파벳을 확인할 때 만약 중복된 알..
· Language/C++
문제 입력 값으로 문자열을 받는데, 만약 ABC이면 다이얼 전화기로 222를 돌려야 한다. 해당 2를 돌리 때 3초가 걸리며, 숫자가 증가할 때마다 1초가 증가된다. 문자열을 입력받아서 해당 문자열을 다이얼을 걸기 위한 최소 시간을 출력. 소스 코드 알파벳 문자열을 갖는 string과 해당 알파벳 위치에 해당하는 걸리는 시간을 설정한다. 입력받은 문자열의 인덱스를 찾아서 arr 배열에 해당 index에 해당하는 값을 sum에 더해준다. arr과 s를 설정하여서 매우 쉬운 코드가 되었다.(다른 풀이가 생각 안 나서..) #include #include using namespace std; int main(void) { string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",input; in..
· Language/C++
문제 세 자리 수인 두 개의 수를 입력받는다. 두 개의 수를 거꾸로 읽어서 두 수중에 큰 수를 출력한다. 소스 코드 두 개의 입력 값을 string으로 받아 줬다. algorithm의 멤버 함수 reverse를 사용하여 해당 string의 문자열을 거꾸로 만들어 줬다. 거꾸로 설정된 두 개의 string의 첫 번째 index 값부터 비교한다. #include #include #include using namespace std; int main(void) { string input1,input2; cin >> input1 >> input2; reverse(input1.begin(),input1.end()); reverse(input2.begin(),input2.end()); for(int i=0; i (i..
· Language/C++
문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 입력 값은 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 출력 값으로는 가장 많이 사용된 알파벳이 대문자로 출력된다. (가장 많이 사용된 알파벳이 여러 개 존재할 경우 '?'출력 소스 코드 해당 코드는 입력받은 문자열에서 알파벳이 나올 때마다 해당 위치의 arr의 값을 증가시켜줬다. arr 값을 설정해주고 해당 arr에서 max값을 갖는 index를 저장한다. 만약 max값을 갖는 index가 존재할 경우 flag를 증가시켜준다. 출력할 때 중복 flag가 설정되어 있으면 '?'을 출력, 아닐 경우 해당 index의 알파벳을 출력. 소문자, 대문자를 구분해주기 위해서 아스..
· Language/C++
문제 알파벳 소문자로만 이루어진 단어 S에서 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력한다. 예를 들어 입력값이 abc이면, a는 0번째 위치 b는 1번째 위치, c는 2번째 위치이고 나머지 알파벳은 -1 값을 갖는다. 중복된 값의 시작 위치를 주의하자 소스코드 #include #include using namespace std; int main(void) { string S; //입력 받을 문자열을 string으로 입력받음 int arr[26]; // 알파벳 위치 값을 저장할 배열 cin >> S; for(int i=0; i < 26; i++) { arr[i] = -1; //모든 알파벳 위치 값을 -1으로 초기화 } for(i..
행복한쿼콰
'문자열' 태그의 글 목록