Algorithm
-
Complexity 복잡도 !Algorithm/Source Code 2022. 1. 13. 17:38
복잡도란 ? 복잡도는 알고리즘의 성능을 나타내는 척도 시간 복잡도 : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지 공간 복잡도 : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지 알고리즘을 위해 필요한 연산의 횟수는 시간 복잡도와 연관있으며 알고리즘을 위해 필요한 메모리의 양은 공강 복잡도와 연관있다 ! 시간복잡도 알고리즘 문제에 명시된 시간제한과 연관되며 작성한 프로그램이 모든 입력을 받아 이를 처리하고 실행 결과를 출력하는데까지 걸리는 시간을 의미한다 시간복잡도 표현 빅오 표기법 (Big - O) 를 사용한다 가장 빠르게 증가하는 항만을 고려하는 표기법이다 아래 예제의 연산 횟수는 데이터의 개수 n 에 비례한다 소스 코드에서 가장 영향력이 큰 부분은 n 에 비례..
-
[백준 9935] 문자열 폭발Algorithm/Source Code 2022. 1. 13. 17:27
문제 상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다. 폭발은 다음과 같은 과정으로 진행된다. 문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다. 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다. 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다. 상근이는 모든 폭발이 끝난 후에 어떤 문자열이 남는지 구해보려고 한다. 남아있는 문자가 없는 경우가 있다. 이때는 "FRULA"를 출력한다. 폭발 문자열은 같은 문자를 두 개 이상 포함하지 않는다. 입력 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,00..
-
[백준1439] 뒤집기Algorithm/Source Code 2022. 1. 13. 17:23
문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 입력 첫째 줄에 문자열 ..
-
[백준 5525] IOIOIAlgorithm/Source Code 2022. 1. 12. 18:11
문제 N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. 출력 S에 PN이 몇 군데 포함되어 있는지 출력한다. solution.py # 백준 5525 n = int(input()) m = int(input()) s = str(input()) cnt = 0 answer = 0 i = 0 while i < m-1: if s[i-1] == 'I'and s..