Loading...
2024. 2. 29. 03:34

파이썬을 이용한 연결리스트 기본 구현 테크닉 배우기

31423번: 신촌 통폐합 계획 (acmicpc.net) 31423번: 신촌 통폐합 계획 첫 번째 줄에 대학교의 개수 $N$이 주어진다. $(2 \leq N \leq 500 \, 000)$ 다음 $N$개의 줄의 $i$번째 줄에 대학교 이름을 의미하는 알파벳 소문자로 이루어진 문자열 $s_i$가 주어진다. 주어지는 대학교 www.acmicpc.net 문제는 단순한데 s[i] 뒤에 s[j]를 그대로 붙이고, s[j] = 0으로 만든다. 이를 n-1번 순서대로 반복해서 얻은 결과를 출력하면 된다 from sys import stdin n = int(stdin.readline()) s = [0] for _ in range(n): c = stdin.readline().rstrip() s.append([c]) fo..

생각해서 브루트포스 탐색 범위를 줄여야하는 경우1 (장난감 강아지)

1. 문제 31287번: 장난감 강아지 (acmicpc.net) 31287번: 장난감 강아지 U, D, L, R로 이루어진 길이 $N$의 문자열 $S$가 주어진다. 문자열 $S$를 $K$번 이어 붙인 문자열을 $T$라고 하자. 장난감 강아지 타카하시는 2차원 좌표평면의 원점에서 시작해서 $T$에 적힌 문자를 하 www.acmicpc.net 2. 풀이 의외로 생각을 요구해서 배울 점이 있는 문제 위,아래,왼쪽,오른쪽으로 강아지가 움직이는데.. 문제는 길이 2000인 문자열 S를 최대 $10^{9}$번 반복시켜서 2000*1000000000번 강아지가 움직일 수 있다 이때 원점에서 움직이는데 다시 원점으로 돌아올 수 있는지 확인해야하는 문제 2000*1000000000번을 1초안에 다 해볼수는 없을 것 근데..

ABC 336 C번 복기 - 0,2,4,6,8로만 만든 숫자들 중 n번째 숫자를 찾는 놀라운 방법

C - Even Digits (atcoder.jp) C - Even Digits AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 0,2,4,6,8로만 이루어진 모든 10진수 정수들을 오름차순으로 나열할 때, N번째 숫자를 구하는 문제 N이 $10^{12}$까지니 다 해보면 당연히 시간 초과일거고 최초 몇가지를 한번 나열해보면? 0 0 2 1 4 2 6 3 8 4 20 10(5) 22 11(5+1 = 6) 24 12(5+2 = 7) 26 13(5+3 = 8) 28 14(5+4 = 9) 0,2,4,6,8,20,22,24,26..

ABC 328 C번 복기 - 문자열에서 누적합을 떠올려야 할 때

1. 문제 C - Consecutive (atcoder.jp) C - Consecutive AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 2. 풀이 매번 부분 문자열을 찾고, 거기서 연속해서 발생하는 문자의 수를 찾으면 당연히 시간초과가 날 것인데, 주어진 문자열에서 0번부터 어떤 위치 i까지 나타나는 연속해서 발생하는 문자의 개수를 누적합 배열로 미리 구해놓는다 예를 들어 mississippi라고 한다면, count = [0]*(n+1), before = ''으로 초기화해두고, i = 1부터 n까지 순회해서, s[i-..

문자열 3개의 가장 긴 공통 부분문자열(Longest Common Subsequence)구하기

1. 문제 1958번: LCS 3 (acmicpc.net) 1958번: LCS 3 첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다. www.acmicpc.net 2. 풀이 문자열 X[1,2,...,i]와 Y[1,2,..,j]와 Z[1,2,..,k]의 가장 긴 공통부분문자열을 dp[i][j][k]라고 하자. 그러면 2개의 문자열 LCS를 구할때와 동일한 방법으로 DP배열을 채울 수 있다 https://deepdata.tistory.com/1022 = 1 and dp[i][j] == dp[i][j-1]: j -= 1 elif dp[i][j] == dp[i-1][j]: i -= 1..

ABC 324 - D번 복기, 순열 다루는 테크닉 - 두 문자열이 서로의 순열일려면? -

1. 문제 D - Square Permutation (atcoder.jp) D - Square Permutation AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 2. 풀이 주어진 정수 문자열의 순열이 어떤 정수의 제곱수가 될때, 그러한 순열의 개수를 구하는 문제. 길이 제한이 13이라고 해도 모든 순열을 찾고, 각 순열이 어떤 수의 제곱수인지 검사하면 매우 느리다 1) 만약 길이 N인 s의 순열이 X의 제곱수가 될려면, X는 아무리 커봐야 $\sqrt{10^{N}}$이다. 그러므로 0부터 $\sqrt{10^{N}}$까..