Koder / 박성훈
article thumbnail
백준 BOJ 1976 - 여행 가자
알고리즘/백준 BOJ 2023. 1. 27. 20:36

유니온 파인드 == disjoint set 문제 소프트웨어 마에스트로 코테에 나왔다고 들어서 한번 다시 풀어보는 중이다. https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 여행이 가능한지 안 가능한지만 묻고 있고, 여행 경로의 길이에 제한이 없기 때문에 특정 여행 경로로 두 도시가 이어질 수 있는지, 즉 모든 여행 계획에 속한 도시가 같은 도시집합 상에 포함되는지를 판별하면 되는 문제다. 여행 계획에 속한 도시들에 대해서 find() 를 진행하고..

article thumbnail
백준 BOJ 13506 - 카멜레온 부분 문자열
알고리즘/백준 BOJ 2023. 1. 25. 21:19

https://www.acmicpc.net/problem/13506 13506번: 카멜레온 부분 문자열 문자열 S의 부분 문자열 T 중에서, 접두사(Prefix)도 될 수 있고, 접미사(Prefix)도 될 수 있고, 두 경우가 아닌 위치에도 등장하는 T를 카멜레온 부분 문자열이라고 한다. 문자열 S가 주어졌을 때, 카 www.acmicpc.net 접두사와 접미사가 같으면서 세군데 이상에서 등장하는 부분문자열을 구하는 문제. 메모리초과와 시간초과 둘다 낭낭하게 받아본 문제 되시겠다 생각보다 제한이 빡빡하지 않나 하는 생각이 든다. 일단 문자열의 길이를 N이라 했을때 fail[N-1] 을 통해서 접두사와 접미사가 같은 최대 길이 부분문자열을 구할 수 있고, 이 부분문자열을 KMP를 돌려서 3개 이상 탐색되는..

article thumbnail
백준 BOJ 1787 - 문자열의 주기 예측
알고리즘/백준 BOJ 2023. 1. 25. 20:20

KMP 연습문제 https://www.acmicpc.net/problem/1787 1787번: 문자열의 주기 예측 P8 = 6, P7 = 6, P6 = 4, P5 = 4, P4 = 2, P3 = 2, P2 = 0, P1 = 0 www.acmicpc.net 실패함수를 활용해 구한 값과 정확히 정반대를 요구하는 문제. 접두사와 접미사가 같아지는 최소 길이를 구해서 문자열의 전체 길이와 빼면 문제에서 요구하는 "추정할 수 있는 주기 중 가장 긴 것의 길이" 를 구할 수 있다. 실패함수에서 뒤로 돌아가고자 할때 j = fail[j-1]; 사용하는 이 구문에서 착안하고 while(dp[i] && fail[dp[i]-1]) dp[i] = fail[dp[i]-1]; 계속 뒤로 돌아가게끔 while문을 사용해서 작성해..

article thumbnail
백준 BOJ 7575 - 바이러스
알고리즘/백준 BOJ 2023. 1. 21. 18:12

https://www.acmicpc.net/problem/7575 7575번: 바이러스 첫 번째 줄에는 감염된 프로그램의 개수 N 과 바이러스 코드 추정을 위한 최소 길이를 나타내는 정수 K 가 주어진다. 단, 2 ≤ N ≤ 100이고, 4 ≤ K ≤ 1,000이다. 두 번째 줄부터 각 프로그램에 대한 www.acmicpc.net KMP 3일차 그 두번째 문제 문제가 복잡하게 생겼는데 구현 자체는 그리 복잡하지는 않다. 입력되는 문자열 중 하나에서 길이가 K인 부분문자열 S'를 분리한 뒤, 다른 모든 문자열에 이 S' 이 포함되어있는지 세어주면 되는 문제이다. KMP 알고리즘을 적용하면 생각보다 나이브하게 풀리니까 부분문자열 분리하거나 할때 괜히 복잡하게 고민하지 말고 그냥 O(N)으로 분리해주도록 하자..

article thumbnail
백준 BOJ 1701 - Cubeditor
알고리즘/백준 BOJ 2023. 1. 21. 18:03

https://www.acmicpc.net/problem/1701 1701번: Cubeditor Cubelover는 프로그래밍 언어 Whitespace의 코딩을 도와주는 언어인 Cubelang을 만들었다. Cubelang을 이용해 코딩을 하다보니, 점점 이 언어에 맞는 새로운 에디터가 필요하게 되었다. 오랜 시간 고생한 www.acmicpc.net KMP를 뇌에 박기위한 연습 3일차 실패함수 배열을 활용하는 문제였다. 접두사와 접미사가 같아지는 최대 길이가 fail[k] 일때, 접두사와 접미사가 같아지면서 두번 이상 나오는 문자열의 조건을 충족하기 때문에, 실패함수 배열에서의 최대값이 문제에서 요구하는 정답이 된다. 접미사는 가변적으로 바뀔수 있는 반면 접두사는 문자열의 제일 앞을 항상 포함하고 있기 때..

article thumbnail
백준 BOJ 13705 - Ax+Bsin(x)=C
알고리즘/백준 BOJ 2023. 1. 20. 17:29

https://www.acmicpc.net/problem/13705 13705번: Ax+Bsin(x)=C 첫째 줄에 정수 A, B, C가 주어진다. (0 =B 이므로 f'(x) 는 모든 x에 대하여 0 이상임을 확인할 수 있다. f(x)가 증가하는 함수이기 때문에, 이분탐색을 통해서 답을 구해줄 수 있고, 이렇게 해결할시 보다 쉬운 버전인 14786번을 해결할 수 있다. 웃긴게 요구하는 정확도 자체는 14786이 더 높다;;; 테스트케이스의 ..

반응형