어서와! 자료구조와 알고리즘은 처음이지? 강의 수강 후 내용을 정리한 글입니다. 자료 구조 정의 Node - Data - Link (next) Head : 리스트의 맨 앞 요소 Tail : 리스트의 맨 끝 요소 of nodes : 연결리스트의 노드 갯수 연결 리스트의 각 원소들이 링크로 연결되어 있다. 배열은 인덱스로 지정되어 있지만 연결 리스트는 임의의 위치에서 연결할 수 있다. 물론 앞에서부터 하나하나 따라가다 보니 선형 탐색과 유사한 점이 있다. 하지만 선형 배열과 비교했을 때, 연결 리스트는 원소 가운데를 끊어 처리할 수 있기 때문에 원소 삽입 또는 삭제가 더 간단하다. 다만 저장 공간(메모리)의 소요가 더 크기 때문에 단점도 존재한다. 연산 정의 특정 원소 참조 (k번째) / 리스트 순회 / 길..
어서와! 자료구조와 알고리즘은 처음이지? 강의 수강 후 내용을 정리한 글입니다. 알고리즘의 복잡도란 문제를 해결하는 데에 있어서 얼마만큼의 자원을 요구하는 가를 파악하는 것이다. 크게 시간 복잡도와 공간 복잡도로 나눌 수 있다. 시간 복잡도 (Time Complexity) 문제의 크기와 이를 해결하는 데 걸리는 시간간의 관계이다. 문제 해결을 위해 입력(input)으로 들어오는 것을 문제의 크기라고 말한다. 평균 시간 복잡도 데이터 입력이 랜덤하게 들어왔을 때, 즉 임의의 입력 패턴을 가정했을 때 걸리는 시간의 평균 최악 시간 복잡도 가장 긴 시간을 소요하게 만드는 입력에 따라 걸리는 시간 (최악의 경우) 공간 복잡도 (Space Complexity) 문제의 크기와 이를 해결하는 데 필요한 메모리 공간 ..
어서와! 자료구조와 알고리즘은 처음이지? 강의 수강 후 내용을 정리한 글입니다. 재귀 함수 (recursive functions) 재귀 함수란 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 것을 의미한다. 같은 알고리즘을 반복적으로 적용하여 풀어낸다. 구글에 Recursive를 검색하면 '이것을 찾으셨나요?'라며 또다시 나온다. 이 역시 재귀를 표현한 구글의 유머 감각이다. (방심하고 봤다가 빵 터짐..) 종결 조건 (trivial case) 재귀 함수를 사용할 때에는 알고리즘의 종결 조건이 필요하다. 조건이 없다면 계속해서 무한히 반복하기 때문이다. def sum(n): if n..: ... else: ...sum(..).. 예제 - n! (팩토리얼) def what(n): if n
어서와! 자료구조와 알고리즘은 처음이지? 강의 수강 후 내용을 정리한 글입니다. 정렬 (Sort) 정렬이란, 배열에 있는 원소들을 조건에 따라 정렬한다는 것을 의미한다. 파이썬에서 문자열로 이루어진 리스트를 정렬할 경우, 문자열은 사전 순서를 따르며 길이가 길다고 해서 큰 것이 아니라는 점을 주의해야 한다. 파이썬에서의 리스트 정렬 방법은 2가지가 있다. sorted() 파이썬의 내장 함수 (built-in function) '새로운' 정렬 리스트를 만듦 sort() 리스트의 method 단순히 해당 리스트를 정렬함 L = [3, 8, 2, 7, 6, 10, 9] L2 = sorted(L) L.sort() 역순으로 정렬 reverse=True를 입력함으로써 파이썬의 리스트를 역순으로 정렬한다. 탐색 (S..
어서와! 자료구조와 알고리즘은 처음이지? 강의 수강 후 내용을 정리한 글입니다. 선형 배열 (Linear Array)은 데이터들이 선(=line)처럼 일렬로 늘어선 형태이다. 자바, C에서 볼 수 있듯이 같은 종류의 데이터가 담긴 '배열'과 다르게, 파이썬에서의 리스트는 각 원소가 서로 다른 데이터 타입을 가지고 있어도 된다. 문자열의 경우, 문자열 길이가 다른 것 역시 상관없다. 리스트 길이와 관계없이 빠른 결과 시간 L = ['Bob', 'Cat', 'Spam', 'Programmers'] L.append('New') L.pop() 먼저 리스트 L을 선언하였다. append는 리스트의 가장 마지막 인덱스에 원소를 추가한다. pop은 마지막 인덱스에서 요소를 꺼낸다. append와 pop 모두 가장 마..
출력을 할 때에는 한 문장에 많은 변수를 담기도, 여러 자료형의 문자를 담아야 할 때가 있다. 이를 위해 파이썬에서는 %와 format 그리고 f-string과 같은 다양한 방법으로 표현할 수 있다. 그럼 지금 각각의 사용법을 알아보겠다! % % 뒤에 표현하고자 하는 자료형을 입력해준다. %d : 정수 %s : 문자열 혹은 정수 %c : charter (1글자) %f : 실수(float) print('지금은 %d시' % 9) print('나는 %s이다' % 'Python') print('지금의 온도는 %.1f' % 25.653) print('이것은 %s색과 %s색이다' % ('핑크', '보라')) 지금은 9시 나는 Python이다 지금의 온도는 25.7 이것은 핑크색과 보라색이다 특히 %f의 경우에 실수..
Python에서 print 함수를 통해 출력할 수 있다. 문자열을 출력하기 위한 기본적인 방법에 대해 살펴보겠다! 기본 '', sep, end print('hello world!') → hello world! print('hello', 'world', '!' sep=' ') -> helllo world ! print('hello', end='~') print('world') -> hello~ world print()에 출력할 내용을 적어주며, 예시를 위해 'hello world'라는 문자를 활용하였다. 문자열의 경우 따옴표를 사용한다. 작은따옴표(') or 큰 따옴표 (") 모두 상관없다. 띄어쓰기도 당연히 포함되어 출력된다. sep은 입력한 여러 출력 대상들 사이에 구분자를 넣기 위해 사용된다. 현재 ..
CodeUp으로 코드업! 드디어 코드업의 파이썬 기초 100제 문제 풀이를 끝냈다! 짝짝- 파이썬을 공부한 뒤, 코드업 문제를 통해 개념과 사용 방법을 익히기 위해 시작했다. 언제 다 풀지.. 라는 생각하다가 일단 시작하고 보자! 해서 차근차근 풀다 보니 어느새 모든 문제를 다 풀게 되었다. 난이도 초반에서 중반까지는 난이도가 어렵지 않았지만 마지막으로 갈수록 높아졌다. 특히 비트단위 부분과 리스트의 개념은 자바에서 제대로 접해보지 못했기 때문에 이번 기회에 파이썬을 통해 제대로 배울 수 있었다. 가끔씩은 자바로 풀어버리고 싶을 때도 있었다 ㅎ.ㅎ.. 물론 자바에 비해 파이썬이 훨씬 간결하게 코드를 작성할 수 있어 편리하다고 느끼긴 했다. 익숙하지 않았을 뿐이지! 문제풀이 문제를 풀면서 느낀 점은 정말 ..
코드업 파이썬 6098번 풀이입니다. 드디어 코드업의 마지막 문제 ✨ https://codeup.kr/problem.php?id=6098 [기초-리스트] 성실한 개미(py) python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용 codeup.kr 문제 영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다. 왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데, 그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다. 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다. (오른쪽에 길이 나타나면 ..