본문 바로가기
  • The future is ours
반응형

파이썬18

시간복잡도 Big-oh (big-o) notation 점근 표기법 알고리즘에 대해 공부하다보면, 처음부터 볼 수 있는 개념이 하나 있다. 그것은 바로 시간복잡도이다. 현재 글을 적는 시점에서도, 나도 가끔 가다가 빅오표기법의 계산을 잘못하여 효율성을 잘못 따질때가 있다. 오늘은 이 시간복잡도에 대해서 알아보고자 한다. 모든 동작에는, 시간과 메모리가 필요로 한다. 이 중 시간복잡도는 프로그램을 실행할 때 소요되는 시간을 계산하는것이다. 구문, 함수의 종류 등에 의해 다양한 공식을 띄게 되는데, 크게 아래의 사진과 같은 방식으로 분류된다. O(1), O(logn), O(n), O(n!) 등과 같은 방식이 존재하며, 위의 방식 이외에 적힌 식에 따라 O(n^5) 등 다양한 파생된 결과가 출력될 수 있다. X축은 투입되는 자료의 갯수, Y축은 그 자료들을 투입한 프로그램의 .. 2022. 4. 28.
자료구조 기초 개념, 링크드리스트 Linked-list(Python, Java 등) 자료구조 Data Structure의 개념에 대해 간단히 설명해보고자 한다. 시험기간이기에 중간고사 범위에 대한 간략한 정리와 설명을 할 예정이다. 자료구조란 자료를 저장하고 '정렬'을 수월하게 하기 위한 방식이며, 일반적인 코드를 짜는 것보다 효율적으로 코드를 짤 수 있다. 리니어 방식과 non 리니어 방식이 있는데, 리니어에는 linked list, 스택, 큐 등의 방법이 존재하며, non 리니어에는 트리와 그래프 등의 방식이 존재한다. 논리니어는 시험범위가 아니기에 아직 설명을 할 수는 없고, 우선 리니어 방식의 자료구조에 대해 알아보겠다. 위의 주제 중 스택과 큐, 덱에 관한 글은 문제풀이를 하며 설명을 잠깐 한 적이 있으므로, 이번 시간에는 링크드리스트에 대해 알아보고자 한다. 흔히 리스트를 이.. 2022. 4. 17.
파이썬 str,int(Python) 이번 시간에는 str, int의 변환에 대해 알아보고자 한다. str은 문자열개념이며, int는 정수개념이라는 것은 다들 알테다. 근데 이것을 왜 비교하는지 궁금할것임이 틀림없다. 예시를 들어보겠다. /// a=1 b=4 print(a+b) c='1' d='4' print(c+d) /// 위의 두 문장의 결괏값이 같게 나올까? 아니다. 이 문장에서의 a와 b는 각각 '정수' 형태만을 띄고 있다. 이렇게 a와 b의 타입을 물어본다면, 이들은 둘다 int로, 더한다는 개념을 우리가 수학에서 배운 개념 그대로 적용이 가능하다. 하지만 아래의 식은 우리가 생각하는 방식과는 다르게 흘러간다. 이 식은, c와 d에서의 1과 4가 각각 정수로 쓰이질 않았다. 이렇게 타입을 물어본다면, 이들은 str타입으로, 더하면 .. 2022. 4. 4.
백준 알고리즘 10866번 덱(파이썬, python) 이번 시간에는 스택과 큐에 이어, 덱을 배워보려고 한다. 덱의 개념은 스택과 큐를 합친것과 유사한데, 왜냐하면 push와 pop을 하는 부분이 각 끝단에 하나씩 위치하기 때문이다. 이게 무슨말이냐면, 앞과 뒤에 pushfront, pushback을 통해서 각각 대입할 수 있고, popfrront와 popback을 통해 각각 소거할 수 도 있다. 따라서 이번 덱 구문에서 사용가능한 명령은 pushfront, pushback, popfront, popback, size, empty, front, back 이렇게 여덟가지가 있다. 그러면 이 명령들을 사용해서 한번 코드를 짜보도록 하자. /// import sys num=int(input()) deque=[] for i in range(num): new=sys.. 2022. 4. 2.
백준 알고리즘 10828번 스택(파이썬,Python) 이 문제는 스택구조에 대해 이해를 하고 있는지를 확인하는 단순한 문제이다. 스택에 대한 이해만 하고 있으면 쉽게 해결할 수 있다. 우선 간략하게 설명하자면, 스택은 한쪽이 막혀있는 통이라고 생각하면 쉽다. 프링글스 통을 생각해보자. 우리가 10개의 각각 다른 물건을 넣었다면, 빼낼때는 그 역순으로, 가장 최근에 넣은 물건부터 빼낼 수 있다. 스택이 그런것이다. 이제 문제를 풀어보자. 문제에서는 push, pop, size, empty, top 이렇게 다섯가지 명령을 제시했다. /// import sys num=int(input()) st=[] for i in range(num): word=sys.stdin.readline().split() ch=word[0] if ch=='push': n=word[1] .. 2022. 3. 21.
반응형