파이썬 스터디용으로 풀었던 문제. 파이썬어려워요 흑흑 https://www.acmicpc.net/problem/1662 1662번: 압축 압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이 www.acmicpc.net 처음에는 입력값을 그대로 스택에 넣고 괄호쌍을 만날때 되돌아가는 방식으로 정답을 구했는데, 반례로 123(12)123(12) 와 같이 괄호쌍 두개가 떨어져있는 경우에는 제대로 계산을 못한다. val = input() st = [] ans = 0 for i in val : if i != ')' : st.append(i) else : whil..
언제나와같이 돌아온 KMP 아주 티어 올리는 맛이 달달한 태그다 https://www.acmicpc.net/problem/1893 1893번: 시저 암호 암호학에서, 시저 암호(또는 시프트 암호, 시저 코드, 시저 시프트)는 가장 간단하면서 많이 알려진 암호화 기술 중 하나이다. "시저 암호"라는 이름은 비밀 통신을 위해 이 방법을 개발한 율리 www.acmicpc.net 지문이 이해하기 그리 쉽지 않은 편인데 간단히 요약해보자면 알파벳 순서 표 A를 보고 원문 W를 X칸 이동시키면서 변환한 뒤에, 암호화된 문자열 S에서 변환된 W가 한번만 등장한다면 이때 가능한 모든 X를 찾는 문제이다. 문제를 나눠서 생각해보자. 1. 순서표 A를 보고 W를 한칸씩 이동시키기. 알파벳과 숫자를 매칭시켜 주는 unord..
https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 두 공장을 잇는 가중치의 최솟값이 최대가 되게 하는 문제. 이렇게말하니까 되게 어려워보인다;; 문제의 핵심은 중량제한이 낮은 다리는 굳이 건널 이유가 없다는 발상. 중량제한이 높은 다리들만 이용해서 두 공장을 연결할 수 있다면 정답에 쉽게 도달할 수 있을것이다. "두 공장을 연결할 수 있다면" >> 유니온파인드를 이용해서 두 공장이 연결됬..
상당히 까다로웠던 문제 좀 푸는데 오래걸렸다 https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net 구하고자 하는 걸리는 날을 T라고 할때, 매일매일 vis배열을 초기화하면서 호수를 탐색하면 시간초과나 메모리초과를 받게 된다. 첫째날에 대부분을 미리 탐색해 놓고, 두번째 날부터는 얼음과 물의 경계선에 해당하는 부분에서만 탐색을 진행해주면 연산량이 극적으로 감소하면서 시간초과 / 메모리초과 둘다 잡히는듯. 큐 두개를 활용해서..
유니온 파인드 == disjoint set 문제 소프트웨어 마에스트로 코테에 나왔다고 들어서 한번 다시 풀어보는 중이다. https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 여행이 가능한지 안 가능한지만 묻고 있고, 여행 경로의 길이에 제한이 없기 때문에 특정 여행 경로로 두 도시가 이어질 수 있는지, 즉 모든 여행 계획에 속한 도시가 같은 도시집합 상에 포함되는지를 판별하면 되는 문제다. 여행 계획에 속한 도시들에 대해서 find() 를 진행하고..
https://www.acmicpc.net/problem/13506 13506번: 카멜레온 부분 문자열 문자열 S의 부분 문자열 T 중에서, 접두사(Prefix)도 될 수 있고, 접미사(Prefix)도 될 수 있고, 두 경우가 아닌 위치에도 등장하는 T를 카멜레온 부분 문자열이라고 한다. 문자열 S가 주어졌을 때, 카 www.acmicpc.net 접두사와 접미사가 같으면서 세군데 이상에서 등장하는 부분문자열을 구하는 문제. 메모리초과와 시간초과 둘다 낭낭하게 받아본 문제 되시겠다 생각보다 제한이 빡빡하지 않나 하는 생각이 든다. 일단 문자열의 길이를 N이라 했을때 fail[N-1] 을 통해서 접두사와 접미사가 같은 최대 길이 부분문자열을 구할 수 있고, 이 부분문자열을 KMP를 돌려서 3개 이상 탐색되는..