본문 바로가기

전체 글148

02 배열, 연결 리스트 - 이중 연결 리스트, Iterator, 원형 연결 리스트 단일 연결 리스트를 사용하면서 많은 불편을 겪었을 것입니다. 앞으로만 이동할 수 있다는 한계점 때문에 뒤로 탐색해야 하는 것이 불가능합니다. 그래서 이런 문제를 해결하기 위해, next를 확장하여 특정 노드의 뒷 노드만 이어주는것이 아니라, 앞 노드까지 이어줄 수 있도록 할 것입니다. 그렇다면 연결 리스트의 구조는 다음과 같이 변경될 것입니다. 크게 어려운 것은 없습니다. 단순히 단일 연결 리스트에 추가적으로 prev가 생성된 것 이외엔 큰 차이가 없습니다. 이처럼 이중 연결 리스트 역시 단일 연결 리스트와 마찬가지로 삽입, 삭제, 탐색이 모두 가능한 자료구조 입니다. 이때 탐색은 방향성이 양쪽에서 있다고는 하지만, 어쨌든 일일이 확인해야 하므로 O(N) 이라는 시간이 소요됩니다. 또, 삽입, 삭제의 경.. 2023. 8. 8.
02 배열, 연결 리스트 - 배열, 동적배열, 단일연결리스트 01. 배열 그동안 우리는 많은 데이터를 저장하기 위해 주로 배열을 사용했습니다. 이후에는 배열이 아닌 수많은 자료구조에 대해 학습하겠지만, 일단 배열의 특성을 이해하고 어떤 장점과 단점이 있는지 알아봅시다. 우리는 배열로 무엇을 하나요? 주로 값을 담고, 값을 배열에서 삭제하고, 원하는 값을 배열에서 찾습니다. 이런 삽입, 삭제, 탐색 연산을 일반적으로 기본 연산이라고 부릅니다. 각각의 시간복잡도를 생각해봅시다. 삽입 실제로는 값을 어디에 삽입하냐에 따라 시간복잡도는 달라집니다. 다만, 보통 시간복잡도라 부를 때에는 최악의 상황에서의 시간복잡도를 얘기합니다. 배열이 주어졌을 때, 앞이나 가운데에 값을 넣는다고 가정합시다. 이렇게 되면 다음과 같이 새로운 값이 들어갈 자리를 확보하기 위해 다른 값들이 한.. 2023. 8. 4.
01 시간, 공간복잡도 WITH 코드 트리 Lv.3 : Novice High (자료구조·알고리즘) 1. 수도코드 Novice Low, Novice Mid를 거치면서 여러분들은 C++이나 Python, 또는 Java에 익숙해졌을 것 입니다. 그러나 이번 파트에서는 조금 다른 문법을 사용할 것입니다. 일단 코드를 볼까요? function test() set hello = 0 hello += 1 print(hello) if hello != 2 hello += 1 print(hello) >> 1 2 코드가 조금 특이해보일 수도 있을겁니다. 이런식으로 실제로 존재하는 코드는 아니지만, 사람들이 이해할 수 있게 작성한 코드를 우리는 수도코드 (PseudoCode) 라고 부릅니다. 수도코드를 작성하는 방법은 특별하게 정해진 것은 없습니다... 2023. 8. 2.
백준 8단계: 일반 수학 1 2745번 진법 변환 문제 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다. 출력 첫째 줄에 B진법 수 N을 10진법으로 출력한다. 예제 입력 1 ZZZZZ 36 예제 출력 1 60466175 https://www.memoengine.com/blog/c-language-pow-sqrt/ C 언어 거듭제곱(pow)과 제곱근(sqrt) 구하기 C 언어의.. 2023. 7. 20.
백준 6단계 : 심화 1 25083번 새싹 printf() 함수에서, 큰따옴표(쌍따옴표)/ 따옴표/ 역슬래시 출력 방법 : 출력하려는 부분 바로 앞에 백슬래시(\) 기호를 하나 붙인다. printf("\"%d\"\n", 123); // 출력 결과: "123" 문제 아래 예제와 같이 새싹을 출력하시오. 입력 입력은 없다. 출력 새싹을 출력한다. 예제 출력 1 복사 ,r'"7 r`-_ ,' ,/ \. ". L_r' `~\/ | | #define _CRT_SECUER_NO_WARNINGS #include int main() { printf(" ,r\'\"7\n"); printf("r`-_ ,' ,/\n"); printf(" \\. \". L_r\'\n"); printf(" `~\\/\n"); printf(" |\n"); printf(.. 2023. 7. 19.
백준 9단계: 약수, 배수와 소수 5086번 배수와 약수 문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다. 출력 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multi.. 2023. 7. 18.