본문 바로가기
반응형

알고리즘13

알고리즘의 공간 복잡도, 팰린드롬 문제로 초보자도 쉽게 이해하자 프로그래밍을 하다 보면 "공간 복잡도"라는 용어를 자주 접하게 됩니다.공간 복잡도란 알고리즘이 실행되는 동안 얼마나 많은 메모리를 사용하는지를 나타내는 척도입니다.이번 포스트에서는 팰린드롬(Palindrome) 문제를 통해 공간 복잡도가 무엇인지 초보자도 쉽게 이해할 수 있도록 설명해보겠습니다.1. 팰린드롬이란?팰린드롬은 앞에서 읽으나 뒤에서 읽으나 동일한 단어를 의미합니다.예를 들어, "racecar", "level", "madam" 같은 단어들은 모두 팰린드롬입니다.팰린드롬을 확인하는 문제는 흔히 인터뷰 문제나 알고리즘 학습에서 많이 등장하는데, 이 문제를 풀기 위한 방법들은 다양합니다.각 방법마다 시간 복잡도뿐만 아니라 공간 복잡도도 다르다는 점이 중요한 포인트입니다.1. 양 끝에서 비교하는 방법 .. 2024. 8. 19.
파이썬 내장 함수와 메소드의 시간 복잡도 파이썬은 다양한 내장 함수와 메소드를 제공하여 프로그래밍을 더 간편하게 만들어줍니다.하지만 이러한 함수와 메소드의 실행 속도는 입력 크기에 따라 달라질 수 있습니다.이 포스트에서는 주요 파이썬 내장 함수와 메소드의 시간 복잡도를 살펴보겠습니다.1. 내장 함수의 시간 복잡도type()print(type([7, 5, 2, 3, 6])) # => print(type(5)) # => print(type(3.14)) # => print(type(True)) # => print(type("True")) # => type() 함수는 파라미터로 받은 값의 자료형을 반환합니다.자료형은 파이썬 내부에서 고정된 값으로 저장되기 때문에 입력 크기.. 2024. 8. 19.
알고리즘의 시간 복잡도: 주요 시간 복잡도와 예시 프로그래밍을 배우다 보면 알고리즘의 시간 복잡도라는 개념을 자주 접하게 됩니다.시간 복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간의 양을 측정하는 방법으로, 알고리즘의 효율성을 평가하는 중요한 지표입니다. 이번 포스트에서는 시간 복잡도를 쉽게 이해할 수 있도록, 다양한 시간 복잡도의 예시를 소개하고 그 의미를 설명하겠습니다.1. 시간 복잡도란?시간 복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간의 양을 나타내는 측정 방법입니다.입력 크기(n)가 커질수록 알고리즘이 소요하는 시간이 어떻게 변화하는지를 분석하는 데 사용됩니다. 가장 흔히 사용하는 표기법은 빅오 표기법(Big O Notation)입니다.2. 주요 시간 복잡도와 예시O(1) - 상수 시간 알고리즘O(1) 알고리즘은 입력 크기와 관계없이.. 2024. 8. 19.
알고리즘의 중요성과 컴퓨터 성능 업그레이드 중 누가 이길까? 프로그래밍을 하다 보면 두 가지 중요한 요소가 성능에 영향을 미칩니다. 하나는 알고리즘이고, 다른 하나는 컴퓨터 성능입니다.그러면 이 둘 중에 성능을 결정하는 데 더 중요한 것은 무엇일까요?컴퓨터를 업그레이드하면 성능이 눈에 띄게 향상될 수 있지만, 알고리즘을 개선하면 더 큰 효과를 얻을 수도 있습니다. 이 블로그에서는 알고리즘의 중요성과 컴퓨터 성능 업그레이드 중 무엇이 더 중요한지 비교해 보겠습니다.1. 알고리즘의 중요성알고리즘은 문제를 해결하기 위한 절차나 방법을 의미합니다.프로그램이 얼마나 빠르고 효율적으로 문제를 해결하는지는 주로 사용된 알고리즘에 따라 달라집니다.잘 설계된 알고리즘은 컴퓨터의 성능에 상관없이 좋은 성능을 발휘할 수 있습니다.1.1 알고리즘이 성능에 미치는 영향 알고리즘의 성능은.. 2024. 8. 17.
시간 복잡도(Time Complexity)가 무엇인가요? 시간 복잡도는 알고리즘의 실행 시간이 입력 데이터의 크기에 따라 어떻게 변화하는지를 측정하는 방법입니다.쉽게 말해, 프로그램이 얼마나 빨리 또는 느리게 실행되는지를 예측할 수 있게 도와줍니다.프로그램을 작성할 때, 우리가 사용하는 알고리즘이 얼마나 효율적인지 파악하는 것이 중요하기 때문에 시간 복잡도는 매우 중요합니다.왜 시간 복잡도를 이해해야 할까요?시간 복잡도를 이해하면 두 가지 큰 이점을 얻을 수 있습니다:성능 예측: 알고리즘이 큰 데이터 세트에서 어떻게 작동할지를 예측할 수 있습니다.효율적인 코드 작성: 더 나은 알고리즘을 선택하거나 최적화하여 프로그램의 실행 속도를 향상시킬 수 있습니다.시간 복잡도의 기본 개념 시간 복잡도는 보통 "O(빅오 표기법)"으로 표현됩니다.빅오 표기법은 알고리즘의 최악.. 2024. 8. 15.
[문제] 삽입 정렬 구현하기 문제반복문을 활용해 삽입 정렬 알고리즘을 구현하세요.insertion_sort() 함수는 data를 파라미터로 받아 삽입 정렬 알고리즘을 실행해 리스트를 오름차순으로 정렬합니다.이 함수는 리스트를 정렬할 뿐 어떤 값을 리턴하지는 않습니다.삽입 정렬은 직관적이지만 실제로 구현하는 것은 생각보다 어려울 수 있습니다. 삽입 정렬 레슨을 여러 번 다시 보고 알고리즘을 어떻게 구현해야 할지 생각해 보세요. 실습 해설 삽입 정렬은 정렬된 범위를 점점 더 넓혀가면서 키라는 값을 적당한 위치에 삽입하는 걸 반복하는 알고리즘입니다.예를 들면 1번 인덱스를 키로 하고 0번 인덱스에서 0번 인덱스까지의 범위(요소가 0번 인덱스 하나뿐인 범위)에서 적당한 위치를 찾아 키 값을 집어 넣습니다.2번 인덱스를 키로 하고 0번 인덱.. 2024. 8. 15.
반응형