본문 바로가기
728x90

문자열23

[python] 백준 5376 소수를 분수로 https://www.acmicpc.net/problem/5376 5376번: 소수를 분수로 유리수 분수를 소수로 나타내면, 소수점 아래 자리가 유한 개인 경우(1/8 = 0.125)와 어떤 자리에서부터 일정한 숫자가 한없이 되풀이 되는 경우(1/11 = 0.090909...)가 있다. 소수를 입력받은 뒤, 분수로 www.acmicpc.net 문제 해결 순환소수를 분수로 바꾸는 방법을 알고 있다면 구현은 어렵지 않다. 하지만 순환부분만 존재를 할 때 순환하지 않는 부분(non_repeat)는 ""이 되는데 int(non_repeat)를 사용하면 ValueError가 뜨는 것을 인지하고 작성해야한다. CODE from math import gcd def convert_to_fraction(decimal):.. 2024. 3. 28.
[python] 백준 14426 접두사 찾기 https://www.acmicpc.net/problem/14426 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 문제 해결 하나씩 비교를 하면 시간복잡도가 매우 크다. 따라서 정렬을 한 후에 사전식 배열 비교를 한다. S에 포함되어있는 문자열과 검사해야하는 문자열을 비교해서 포함하면 정답+1과 다음 검사해야하는 문자열을 비교를 한다. 만약 포함여부에 해당하지 않고 S에 포함되어있는 문자열의 사전식 배열이 더 뒤이면 검사해야.. 2024. 3. 10.
[python] 백준 20310 타노스 문제 해결 Counter 함수를 통해 각각 몇 개씩 있는지 쉽게 알 수 있다. 문자열 처음부터 보면서 '0'은 Counter의 절반이 될 때 까지 만나면 정답 문자열에 넣는다. 문자열 처음부터 보면서 '1'은 Counter의 절반이 될 때 까지 만나면 패스한다. 문자열 처음부터 보면서 '1'은 Counter의 절반이 넘어가고 나서 만나면 정답 문자열에 넣는다. CODE import sys import math from collections import Counter input = sys.stdin.readline n = list(str(input()).strip()) X = Counter(n) a = X['0']//2 b = X['1']//2 answer = '' for i in range(len(n)).. 2023. 12. 23.
[python] 백준 30823 건공문자열 https://www.acmicpc.net/problem/30823 30823번: 건공문자열 양의 정수 $N$, $K$와 영어 알파벳 소문자로 구성된 길이가 $N$인 문자열 $S$가 주어진다. reverse(i)를 $S$의 $i, i+1, ... , i+k-1$번째 문자로 이루어진 부분 문자열을 뒤집는 연산이라고 정의하자. $i = 1, 2, www.acmicpc.net 문제 해결 시간초과에 고민을 많이 해보게 된 문제 하나씩 돌리면 당연히 정답이 나오지만 숫자가 500000까지 가능하므로 시간초과가 난다. 따라서 규칙을 찾아야한다. 규칙은 직접 해보면서 찾는 것이 쉽다. 먼저 K번째 문자부터 끝문자까지 순서대로 나온다는 것을 알 수 있다. 그리고 N과 K의 차이가 홀수면 앞에 K-1번째 문자까지 순서대.. 2023. 12. 3.
728x90