ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SW 정글 6일차] 몰랐었던 배열 비교
    기타/SW 사관학교 정글 2021. 8. 7. 22:49

    오늘은 정글 6일차, 어제에 이어 알고리즘 기초공부를 이어나갔고 제공된 기초문제 중 뒷부분은 다소 시간이 걸리는 문제이기에 팀원과의 리뷰는 오늘까지 이루어졌다.

     

    오늘 정리할 내용은 알고리즘과 자료구조에 대한 공부는 했었지만 내가 모르거나 혹은 대충 알고 넘어갔던 부분을 정리해보려고 한다.

     

     

    1. 비교 연산자로 배열의 대소 또는 등가 관계 판단하기

    먼저, 기존에는 모르고 있었던 배열과 배열사이에 비교 연산자를 사용하는 것이다.

    간단하게 배열에 대해 설명하면 배열은 기본 자료구조 중 하나로 어떠한 값들을 묶음 단위로 저장하여 데이터가 모여있는 자료구조이다.

    배열에는 객체가 저장되고 배열에 저장된 객체 하나하나를 원소(element)라고 한다.

    그리고 이 원소(element)는 각각 인덱스(index)번호를 부여받고 인덱스번호는 순서대로 0번부터 n번까지 부여받는다.

    배열의 장점은 생성할 때 원소 개수를 자유롭게 지정이 가능하고 인덱스를 이용하여 원소(element)에 접근을 할 수 있다.

    또한, 배열 원소(element)의 자료형은 int, float, boolean형 등 어떠한 것도 가능하고 원소(element)끼리 자료형이 서로 달라도 저장이 가능하다.

    현재 내가 배우고 있는 파이썬에서는 리스트(list)와 튜플(tuple)로 배열을 구현할 수 있다.

     

    그러면 이제 배열에 비교 연산자를 사용하는 것에 대해 알아보자.

    보통은 어떠한 하나의 값끼리 대소 또는 등가 관계를 판단하기 위해 비교 연산자를 사용한다.

    하지만, 배열과 배열사이에도 아래의 코드처럼 비교 연산자를 사용하여 관계 파악이 가능하다.

    print([1, 2, 3] == [1, 2, 3])
    // 결과: True
    print([1, 2, 4] > [1, 2, 3])
    // 결과: True
    print([1, 2, 3] < [1, 2, 3, 4])
    // 결과: True
    print([1, 2, 3] < [1, 2, 3, 4] < [1, 2, 3, 5, 6])
    // 결과: True

    배열의 대소 또는 등가 관계 판단은 각 배열의 맨 앞 원소를 차례대로 비교하는 것이다.

    첫 번째 줄 코드를 보면 배열의 등가 관계 판단을 위해 1 == 1, 2 == 2, 3 == 3이므로 True가 되는 것이다.

    이렇게 차례대로 비교하다가 어느 원소의 값이 크다면 그 배열이 큰 것으로 판단한다.

    두 번째 줄 코드를 보면 1 == 1, 2 == 2, 4 > 3이므로 왼쪽 배열이 큰 것으로 판단된다.

    (반드시 마지막 배열까지 비교하는 것이 아닌 중간에서 어느 한쪽이 큰 원소를 갖고 있다면 그 배열이 크다고 판단한다.)

    그리고 배열의 크기(가지고 있는 원소의 수)가 다른 경우에는 앞의 원소가 모두 같다면 원소의 갯수가 많은 배열이 크다고 판단한다.

    세 번째 줄 코드를 보면 1 == 1, 2 == 2, 3 == 3으로 관계를 판단하고 오른쪽 배열만 원소를 더 가지고 있으므로 오른쪽 배열이 크다고 판단하는 것이다.

     

    이러한 배열에 비교 연산자를 활용하여 대소 또는 등가 관계를 판단하는 것은 언젠가 유용하게 쓰일 개념인 것같아 이렇게 정리해본다.

     

     

    오늘은 비효율적으로 공부한 느낌이 든다.

    책으로 배열파트부분을 읽으며 리마인드하고 새로운 내용을 안 것은 좋지만 어제 못 푼 골드바흐의 추적 문제를 놓아주지 못해 3시간은 소비했다.

    어제도 3시간 넘게 소비했는데 오늘까지 이렇게 시간을 써버리니 오늘 얻은게 없는 느낌이다.

    이제는 2시간정도 고민해보고 답이 안나오면 풀이를 보며 내 것으로 만들고 다음에 다시 풀어보면서 완전히 내 것으로 만드는 식으로 해야겠다.

     

     


    <참고 자료>

    자료구조와 함께 배우는 알고리즘 입문 파이썬 편 (저자 Bohyoh Shibata, 옮김 강민)

    댓글

Designed by Tistory.