ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1-1. 자료구조란 무엇인가
    프로그래밍/자료구조와 알고리즘 2022. 8. 16. 23:03
    반응형

    자료구조란?

    자료구조란 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 같은 데이터를 가지고 다양한 방식으로 조직, 관리, 저장을 할 수 있는 것이다. 다음을 예시로 들어봤다.

    a = 'Hello "
    b = "World!"
    
    print(a+b)

    위에는 코딩을 시작하면 누구나 한번쯤 해보는 Hello World!를 예시로 했다.

    문자열 2개를 하나의 메세지로 이어지는 프로그램이다. 이를 해석하자면 문자열이 2개가 있고 각 문자열에 변수가 하나씩 연결되어있는 구조이다. 

    위에서 이야기했다 싶이 자료구조는 같은 데이터를 가지고 다양한 방식으로 조직을 할 수 있다. 즉 위에 코드도 다른 방식으로 조직을 할 수 있는 것이다. 위와 같은 결과값을 가지는 코드를 한번 다시 만들어 보자.

    array = ["Hello ", "World!"]
    print (array[0] + array[1])

    이는 위와 같은 Hello World!라는 데이터를 배열에 저장을 한 방식이다. 즉 같은 데이터를 다른 방식으로 저장할 수 있는 것이 자료구조이다. 그럼 자료구조라는 것을 왜 알아야하는가? 하는 의문을 가질 수 있다. '어차피 같은 데이터를 표현 할 수 있는데 굳이 자료구조까지 배워서 할 필요가 있을지'라고 생각도 할 수 있다. 본인 또한 의문점을 가졌기 때문이다. 그럼 왜 자료구조가 필요한지는 아래에서 설명을 하겠다.

    자료구조의 필요성

    자료구조는 단순히 데이터를 조직하기 위해서 배우는 과정이 아니다. 자료구조는 자신이 만든 데이터 조직이 코드의 실행 속도에 미치는 영향이 크기에 자료구조를 알아야한다. 

    한가지 예시를 들어 이에 대해 설명을 하겠다.

    while number <= 100:
        if number % 2 == 0:
            print(number)
            
        number += 1
    while number <= 100:
        print(number)
    
        number += 2

    위 2개의 코드는 모두 2부터 100 사이의 짝수를 출력하는 코드이다. 위 2개 중 어떤 코드가 빠를까? 코드를 보면서 생각을 해보자

     

    바로 아래의 코드가 더 빠르다. 이유는 무엇일까?

    처음 코드는 총 100번 루프를 한다. number가 1씩 증가하면서 일일이 확인을 하기에 총 100번의 확인 과정을 갖는다. 그러나 두번째 코드는 총 50번 루프를 한다. 애초에 number를 2씩 증가하기에 확인하는 과정을 거치지 않고 2의 배수를 출력한 것이다. 그래서 총 50번 루프를 통해 같은 결과값을 얻을 수 있다.

    그럼 위에 2개랑 같은 값을 가지면서 가장 빠르게 구할 수 있는 코드는 무엇일까? 곰곰히 생각을 해보자.

     

    바로 아래의 코드이다.

    print("2\n4\n6\n...\n98\n100")

    바로 일일이 직접 치는 것이 가장 빠르다. 그러나 이는 코드를 비효율적으로 만든 것이기에 추천하지는 않는다,

     

    위에 3가지 코드를 예시로 확인했듯이 자료구조를 배우는 이유는 효율적으로 코드를 작성하기 위해 배운다고 생각을 하면 된다.

    앞으로 자료구조를 배우면서 다양한 자료구조가 코드 속도에 어떤 영향을 미치는지 이해해보자.

    다음은 배열, 집합이라는 자료구조의 대해 알아보도록 하자.

     

    출처

    제이 웬그로우, 『누구나 자료구조와 알고리즘 개정2판』, 심지현, 도서출판 길벗(2021), p27 ~ p30

    반응형

    댓글

Designed by Tistory.