https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c5935856-7fb3-4f50-954c-f660555c9450/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/182f6b05-7ed4-4c2a-91b3-bf56e28cbd1e/Untitled.png

"""
Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때,
    왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며
    숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오. 

    단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리,
    모든 연산은 왼쪽에서 순서대로 이루어진다.
"""

"""
0이나 1이면 더하고, 나머지는 곱해라.
지금까지의 합계가 0이면 무조건 더해라.
"""

input = [0, 3, 5, 6, 1, 2, 4]

def find_max_plus_or_multiply(array):  # O(N)
    i = 0
    answer = 0
    
    while i < len(array):
        if array[i] <= 1 or answer == 0:
            answer += array[i]
        else:
            answer *= array[i]

        i += 1
    
    return answer

result = find_max_plus_or_multiply(input)
print(result)
"""
Q. 정수를 입력 했을 때, 그 정수 이하의 소수를 모두 반환하시오. 

소수는 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다.
"""

def find_prime_list_under_number(number):
    i = 2
    answer = []
    
    while i < number:  # 2~20
        j = 2
        
        while j < i:
            if i % j == 0:
                # print(i, "is not prime number")
                i += 1
                
                break

            j += 1

        # print(i, "is prime number")
        answer.append(i)

        i += 1

    return answer
                    
    

input = 20
result = find_prime_list_under_number(input)
print(result)
"""
Q. 
0과 1로만 이루어진 문자열이 주어졌을 때, 이 문자열에 있는 모든 숫자를 전부 같게 만들려고 한다.
할 수 있는 행동은 문자열에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다.
뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다.

예를 들어 S=0001100 일 때,

전체를 뒤집으면 1110011이 된다.
4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.
하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면
한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.

주어진 문자열을 모두 0 혹은 모두 1로 같게 만드는 최소 횟수를 반환하시오.
"""

def find_count_to_turn_out_to_all_zero_or_all_one(string):
    divide = 1

    i = 0

    while i < len(string) - 1:
        if string[i] != string[i + 1]:
            divide += 1
        
        i += 1

    return int(divide / 2)

input = "011110"  # 2

result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)

input = "101101001"  # 3

result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)