본문 바로가기
728x90

문자열23

[python] 백준 5052 전화번호 목록 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 문제 해결 최대한 비교를 적게 하기 위해 문자열을 올림차순으로 정렬해서 이전 것이 다음 원소 안에 포함되는 것이 있는지 확인하면 된다는 것을 쉽게 알 수 있다. CODE t = int(input()) for _ in range(t): n = int(input()) result = [] for i in range(n): x = str(input().rstrip()) resul.. 2023. 4. 9.
[python] 백준 20437 문자열 게임 2 https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 문제 해결 문자열을 처음부터 끝까지 보면서 어떤 알파벳이 K개가 나올 때 끊어서 단어를 저장한 후 최소 길이의 단어와 최대 길이의 단어 길이를 출력하면 된다. (문제 그대로 읽은 것 같다;) i번째 나온 문자를 ord를 통해 구분하여 리스트에 각 문자 별로 몇번째, 몇번째에 나왔는지 따로 저장할 수 있다. CODE t = int(input()) for _ in range(t): word = s.. 2023. 4. 7.
[python] 백준 2195 문자열 복사 https://www.acmicpc.net/problem/2195 2195번: 문자열 복사 첫째 줄에 S, 둘째 줄에 P가 주어진다. S와 P는 영어 대소문자와 숫자로만 되어 있다. S의 길이는 1,000을 넘지 않으며, P의 길이는 1,000을 넘지 않는다. copy함수만을 이용하여 S에서 P를 만들어낼 수 www.acmicpc.net 문제 해결 S에서 P로 가는 경우의 수를 찾는 것보다 P에서 S로 가는 경우를 찾는 것이 더 편하다. (문자열 하나의 기본 전략인 듯) 그러면 P에서 일부분이 S의 안에 있으면 +1을 해주면 될 것이다. 대신 최대한 문자열 길이를 길게 끊어야 한다. 문자열이 S안에 포함이 안될 때 까지 계속 이어 붙인다. 포함이 안되면 거기서 끊고 ans을 +1 해주고 인덱스는 다시 거.. 2023. 4. 6.
[python] 백준 12919 A와 B 2 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 문제 해결 처음에 S->T로 만드는 BFS 함수를 생각했다. 하지만 메모리초과, 시간초과 나오는 것을 보고 다른방법을 생각하게 되었다. 이전에 긴 문자열에서 짧은 문자열을 만드는 풀이가 생각이 났다. 역시 문자열을 만드는 것은 긴 문자열에서 짧은 문자열로 생각하는 것이 정답이다.(그래야 비교할 경우의 수가 줄어든다.) CODE S = str(input()).. 2023. 4. 5.
728x90