- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- 정렬
- C++
- 자료구조
- python
- 배열
- 안드로이드
- android studio
- 알고리즘
- Java
- 로그인
- 연결리스트
- Firebase
- 공유대학
- 프로그래밍 입문
- oauth
- til
- C언어
- 동적할당
- 컴퓨터공학과
- 프로그래머스
- 파이썬
- 자바
- 코딩테스트
- 안드로이드 스튜디오
- firebase google
- sql
- 비주얼 베이직
- 구글 로그인
목록개인 공부/알고리즘&자료구조 (11)
코딩하는 해달이

학교의 자료 구조 수업을 들으면서 연결리스트라는 개념에 대해 배웠다. 처음에는 list나 vector와 같은 자료구조에 대해 어떤 알고리즘으로 이루어져있는지, 구현은 어떻게 하면 될 지에 대해 생각해 본 적이 없었는데, 수업을 듣다보니 호기심도 생기고, 구현 방법이 신기해서 재미있었던것같다. 연결리스트란? - 추상적 자료형인 배열을 구현한 자료구조이며, 데이터를 값과, 주소로 나누어 저장하는 구조를 말한다. 이 때 주소는 다음 노드의 주소를 가리키며, 이렇게 구현한 배열은 각 노드가 한 줄로 길게 연결되어있는 모양새를 가지게 된다. 아래의 그림은 노드 한 개의 모양과 연결리스트의 전체적인 모양을 나타낸 것이다. 연결리스트와 일반 배열의 특징 배열 인덱스를 이용해서 주소에 직접 접근해서 속도가 빠르다. 크..
알고리즘 입력으로 두 수 m,n(m>n)이 들어온다. n이 0이라면, m을 출력하고 알고리즘을 종료한다. m이 n으로 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다. 그렇지 않으면, m을 n으로 나눈 나머지를 새롭게 m에 대입하고, m과 n을 바꾸고 3번으로 돌아온다. C++코드 int gcd(int a, int b) { int c; while (b != 0) { c = a % b; a = b; b = c; } return a; }
알고리즘 초기 sieve 배열의 모든 값은 0으로 초기화되어 있습니다. 2부터 차례대로 정수를 살펴 봅니다. 2가 소수입니다. 따라서, 2의 배수들은 sieve[x] = 1로 전부 표시해 놓습니다. 이럴 경우 sieve[4] = sieve[6] = sieve[8] = … = 1이 됩니다. 이제 다음 숫자를 살펴봅니다. (sieve[x] == 1인 x는 살펴보지 않고 반복문상에서 건너뛸 수 있습니다.) 3은 sieve[3] = 0 이었습니다. 따라서 소수이며, 3의 배수들은 전부 1로 표시해 놓습니다. 4를 봅니다. 4는 이미 sieve[4] = 1이므로 건너뜁니다. 5를 봅니다. sieve[5] = 0 이므로 소수이며, 5의 배수들은 전부 1로 표시해 놓습니다. … C++ 코드 #include #incl..