본문 바로가기

백준/문자열16

백준 1213 c++ "팰린드롬 만들기" -PlusUltraCode- https://www.acmicpc.net/problem/1213[필자 사고]팰린드롬 문제이다. N의 숫자가 50개가 주어져 있어서 부르스트로 생각은 했지만 경우의 수가 50!가 나와서 포기했다.잠시 생각해보니 홀수 짝수 의 규칙성을 떠오릴 수 있다.홀수개의 알파벳이 한개이거나 홀수개가 없으면 팰린드롬을 만들 수 있는거다.그러나 만약 홀수개의 알파벳이 2개이상이면 만들지 못한다.그래서 필자는 초기값 중간값 마지막 값 으로 3등분을 나눠서 문제를 해결했따.초기값과 마지막값은 대칭개념이라 하나만 구하고 reverse 를 해주면 되고중간값은 홀수 알파벳을 넣으면 해결된다. 아래는 자세한 코드 해설이다.[코드 해설]변수 설명str: 사용자로부터 입력받는 문자열입니다.hol: 알파벳 개수가 홀수인 문자가 있을 경.. 2025. 3. 24.
백준 14425 c++ "문자열 집합" -PlusUltraCode- https://www.acmicpc.net/problem/14425 [필자 사고]필자는 map 을 이용하여 이 문제를 해결했따.해당 문자열이 map 배열에 있다면 count 수를 증가시키는 형태로 문제를 풀었다.[코드 해설]2. Input 함수N과 M을 입력받습니다.이후 N개의 문자열을 입력받아 map에 저장합니다.myMap.insert({ str, 1 })를 통해 중복 없이 저장됩니다.이 map은 일종의 사전(dictionary) 역할을 합니다.3. Game_Start 함수M개의 문자열을 하나씩 입력받습니다.각 문자열이 myMap에 존재하는지 find()를 통해 확인합니다.존재하면 resultCount를 1 증가시킵니다.resultCount를 출력합니다.즉, 첫 번째 그룹에 존재하는 문자열이 두 번째 .. 2025. 3. 21.
백준 11478 c++ "서로 다른 부분 문자열의 개수" -PlusUltraCode- https://www.acmicpc.net/problem/11478 [필자 사고]부분 문자열의 갯수를 구해야 되는 문제이다.시간복잡도를 계싼해 보면 n(n+1)/2 의 경우의 수가 나온다현재 수는 1000에 해당되므로 1억이 넘지 않아 시간내에 문제를 풀 수 있다. 필자는 map을 이용하여 insert 삽입 과정을 log n 검색 작업을 log n 을 이용하여 문제를 해결했다.아래는 자세한 코드 해설이다.[코드 해설]1. 입력 받기사용자로부터 문자열을 입력받습니다.입력은 전역 변수 str에 저장됩니다.2. 게임 시작(Game_Start 함수)이 함수에서는 문자열 str의 모든 연속된 부분 문자열을 생성합니다.바깥쪽 반복문 i는 부분 문자열의 시작 위치를 나타냅니다.안쪽 반복문 k는 끝 위치를 확장해가며 .. 2025. 3. 21.
백준 1316 c++ "그룹 단어 체커" -PlusUltraCode- https://www.acmicpc.net/problem/1316 [필자 사고]처음에 str.find를 이용하여 풀가도 생각했지만 부르스트 알고리즘을 적용하여 O(n2)으로 문제를 해결했다.간단한 문자열 문제라서 프로그래밍적 사고를 키우는데 좋은 문제였다.[코드 해설]1. 입력 처리 (Input 함수)먼저 N을 입력받는다. 이는 주어진 단어의 개수이다.N개의 단어를 입력받아 vector arr에 저장한다.2. 그룹 단어 판별 (checkGroupWords 함수)주어진 문자열이 그룹 단어인지 검사하는 함수이다.문자열을 처음부터 끝까지 순차적으로 확인하며, 같은 문자가 연속해서 나타나는지 확인한다.특정 문자가 등장한 이후에 다른 문자가 나타났다가 다시 해당 문자가 나오면 그룹 단어가 아니므로 1을 반환한다... 2025. 3. 20.