728x90

제곱근 이하만 계산하면된다  : 18의 약수 3*6, 6*3 도 됨.. 제곱근 이하만 확인하면 OK

설명 참고 >> www.it-note.kr/308

# 005 정수입력시 그이하 소수 출력
number = 20


# 소수 : 약수가 1과 자기자신밖에 없는것.
# N이 N의 제곱근보다 크지 않은 어떤소수로도 나눠지지 않는다.

def find_prime_list_under_number(number):
    prime_list = []
    count = 0
    for n in range(2, number + 1):
        for i in prime_list:
            count += 1
            if n % i == 0 and i * i <= n:
                break
        else:  # 브레이크가 한번도 실행안되었을때
            prime_list.append(n)
    print("최종:", count)
    return prime_list


def find_prime_list_under_number1(number):
    prime_list = []
    count = 0
    for n in range(2, number + 1):
        for i in range(2, n):
            count += 1
            if n % i == 0:
                break
        else:
            prime_list.append(n)
    print("1:", count)
    return prime_list


def find_prime_list_under_number2(number):
    prime_list = []
    count = 0
    for n in range(2, number + 1):
        for i in prime_list:  # 2~ n-1 중에서 소수인 친구들만
            count += 1
            if n % i == 0:
                break
        else:  # 브레이크가 한번도 실행안되었을때
            prime_list.append(n)
    print("2", count)
    return prime_list


print(find_prime_list_under_number1(number))

print(find_prime_list_under_number2(number))

print("최종: ", find_prime_list_under_number(number))
728x90
# Q. 다음과 같이 영어로 되어 있는 문자열이 있을 때, 이 문자열에서 반복되지 않는 첫번째 문자를 반환하시오. 만약 그런 문자가 없다면 _ 를 반환하시오.
# "abadabac" # 반복되지 않는 문자는 d, c 가 있지만 "첫번째" 문자니까 d를 반환해주면 됩니다!
import re

#input = "abadabac"
input = "abab"

def find_not_repeating_first_character(input):
    ascii_a = ord("a")
    ascii_z = ord("z")
    occured_alphabet = [0] * (ascii_z - ascii_a + 1)
    # print(ord("z")-ord("a")+1)
    input_param = input.lower()
    input_param = re.sub("[^a-z]", "", input_param)
    for text in input_param:
        occured_alphabet[ord(text)-ascii_a] += 1
    #print("occured_alphabet: ",occured_alphabet)

    for text in input_param:
        if occured_alphabet[ord(text) - ascii_a] == 1:
            return text
    return "_"


print(find_not_repeating_first_character(input))

728x90
#Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오.
#단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다.
input = [0, 3, 5, 6, 1, 2, 4]

# 1이하는 더하고 크면 곱한다.

def find_max_plus_or_multiply(input):

    result = input[0]

    for idx in range(1,len(input)):
        if input[idx] >= 1 :
            result += input[idx]
        else:
            result *= input[idx]

    return result

print(find_max_plus_or_multiply(input))
728x90
# 002 최빈값 찾기, 최빈값==가장많은 빈도
import re

input = "I'm Going To Live Every Minute Of It."


# 정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp[1] 또는 regex, rational expression)

def find_max_occured_alphabet(input):
    ascii_a = ord("a")
    ascii_z = ord("z")
    occured_alphabet = [0] * (ascii_z - ascii_a + 1)
    # print(ord("z")-ord("a")+1)
    input_param = input.lower()
    input_param = re.sub("[^a-z]", "", input_param)
    for text in input_param:
        occured_alphabet[ord(text)-ascii_a] += 1

    #print("occured_alphabet: ",occured_alphabet)

    max_occured_idx = 0
    max_occured_idx_value = occured_alphabet[0]
    for idx in range(len(occured_alphabet)):
        if max_occured_idx_value < occured_alphabet[idx]:
            max_occured_idx_value = occured_alphabet[idx]
            max_occured_idx = idx

    return chr(max_occured_idx + ascii_a)


print(find_max_occured_alphabet(input))
728x90
# 001 최대값을 찾아라

input = [1, 2, 4, 6, 7, 8, 9]


def find_max_num(input):
    max_num = input[0]
    for idx in range(1,len(input)):
        if max_num < input[idx]:
            max_num = input[idx]
    return max_num

print(find_max_num(input))

+ Recent posts