곱하기 or 더하기

QA - Test - Errer·2022년 11월 13일
0

TIL

목록 보기
13/52
post-thumbnail

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

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

이것이 포인트입니다.

원래는 더하기 곱하기중 당현히 곱하기를 먼저 해야겠지만. 이러면 최대값이 나오지 않습니다.

예를들면

1+1 과 1x1중에 어느것이 더 크냐고 말하면 당연히 1+1 이 크다고 말합니다.
그러니 연산을했을때 더 큰값이 나와야함으로 더하기를 했을때는 곱하기보다 더 큰값이 나오게 만들어서 최대값을 나오게 합니다.

정리하면 숫자가 1보다 작거나 같다면 더합니다!

그 외에는 다 곱하면 최대값이 나오겠죠?

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


def find_max_plus_or_multiply(array):
    multiply_sum = 0
    for number in array:
        if number <= 1 or multiply_sum <= 1:
            multiply_sum += number
        else:
            multiply_sum *= number
    return multiply_sum

result = find_max_plus_or_multiply(input)
print(result)

for문을 황용하여 돌려
number <= 1 or multiply_sum <= 1:
넘버가 1보다 크거가같고
멀터플라이 썸이 1보다 크고 같을때
multiply_sum += number
else:
multiply_sum *= number
멀티플라이썸을 넘버랑 더하고
만약 아닐시
멀티플라이썸과 넘을 곱한다.

해석 할수 있다.

반복되지 않는 문자

Q. 다음과 같이 영어로 되어 있는 문자열이 있을 때, 이 문자열에서 반복되지 않는 첫번째 문자를 반환하시오. 만약 그런 문자가 없다면 _ 를 반환하시오.

그럼 첫번째로 반복이 되는지 안되는지 확인해야 답이 나올것같다. 수업을 들으면서 많이 나온 알파벳 찾기를 이용하여 문제를 풀면 더 쉽게 답을 찾을수있을 꺼같다.

    alphabet_occurrence_array = [0] * 26

    for char in string:
        if not char.isalpha():
            continue
        arr_index = ord(char) - ord("a")
        alphabet_occurrence_array[arr_index] += 1

이것을 가져온후 여기에 맞지않는
not_repeating_character_array 이라는 것을 만들어

input = "abadabac"

def find_not_repeating_character(string):
    alphabet_occurrence_array = [0] * 26

    for char in string:
        if not char.isalpha():
            continue
        arr_index = ord(char) - ord("a")
        alphabet_occurrence_array[arr_index] += 1

    not_repeating_character_array = []
    for index in range(len(alphabet_occurrence_array)):
        alphabet_occurrence = alphabet_occurrence_array[index]
        if alphabet_occurrence == 1:
            not_repeating_character_array.append(chr(index + ord("a")))

    for char in string:
        if char in not_repeating_character_array:
            return char

    return "_"

result = find_not_repeating_character(input)
print(result)

반복되지 않는 문자열을 다 넣어주면 코드가 돌면서 문자가 발견 된다면 그 값을 반환 시키게된다.

여기서 입력된 문자열 내에서 반복되지 않는 첫번째 문자를 찾아서 반환해줘야 하기 때문에 string을 써서 반복이 되지않는 문자를 찾아 반환해주면 된다!

역시 알고리즘은 머리로 이해는되지만 처음에 쓰기가 너무 힘들어 완벽하게 이해하는게 중요할껏 같다...

profile
https://dirt-shoe-59d.notion.site/QA-Engineer-a021ababa8b44cb780000fc01eca2a8e

0개의 댓글