커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
숙제 피드백 부탁드립니다.
undefined주차
북마크
이*우
댓글
1
추천
0
조회수
14
조회수
14
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


다름이 아니라 문자열 뒤집기, n 이하의 소수 나열하기 문제를 다음과 같이 작성해 보았습니다.

input 예시가 하나씩밖에 없어서 제가 작성한 답이 맞는지 확신이 서지 않습니다.

답안이 맞는지, 더 간결한 알고리즘이 있는지 궁금합니다.

#문자열 뒤집기

input = "011110"




def find_count_to_turn_out_to_all_zero_or_all_one(string):
    # 얼마나 자주 바뀌었는가 체크합니다
    how_often = change_num(string)
    # how_often에 저장된 정수를 n이라 하면 짝수면 n / 2 홀수면 n / 2 + 1이므로,
    # (n / 2) + (n % 2)를 하면 일관적입니다.
    return (how_often / 2) + (how_often % 2)




# 0이 나오다가 1, 또는 1이 나오다가 0이 되는 횟수가 얼마나 되는지 구합니다.
def change_num(string):
    str_itr = len(string) - 1
    result = 0
    for i in range(str_itr):
        # 인접한 두 항이 같지 않으면 result에 1을 증가시킵니다.
        if string[i] != string[i + 1]:
            result += 1
    return result




result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)



# n 이하 소수 출력
input = 20




def find_prime_list_under_number(number):
    result = []
    list_of_num = list(range(2, number + 1))
    temp_1 = list_of_num[0]
    while list_of_num:
        temp_1 = list_of_num[0]
        result.append(temp_1)
        for i in list_of_num:
            if i % temp_1 == 0:
                list_of_num.remove(i)
    return result


# 이중for문이라 굉장히 신경이 쓰입니다. 에라토스테네스의 체를 이중 for문을 쓰지 않고 구하는 법을 알고싶습니다.
result = find_prime_list_under_number(input)
print(result)









취소
 공유
취소
댓글 0
댓글 알림
나의얼굴