본문 바로가기

C++/알고리즘10

[c++] 연결리스트 이용한 다항식 덧셈/뺄셈/곱셈 1. 다항식 구성 : 계수 + 차수 ( 음수도 구별하도록 코드 작성하였음) : string으로 식을 입력하면 (계수 + 차수)를 하나의 노드로 묶어 연결리스트에 삽입하는 setNode함수 작성 ( 단, 식을 입력할 때 띄어쓰기 불가능하고 내림차순으로 작성해야함 ) 1-1. 케이스 : string의 문자 하나씩 반복문 돌려가며 노드 구성하여 삽입 : string[i] (i=0~len-1) 음수 판별 : bool 자료형을 통해 default값을 false로 해놓고 음수인 경우 true로 설정하여 노드를 삽입할 때 true인 경우에 음수로 변환하여 노드 삽입 → 계수가 1인 특수 케이스 고려 : goto문 이용하여 바로 차수 구하는 코드로 이동 숫자인 경우 → 2자리 숫자이상인 케이스 고려 → 차수가 0/1 .. 2023. 11. 28.
[C++] 연결리스트에서 중복 노드 제거 1. 알고리즘 설명 : 정렬되지 않고 중복값이 존재하지않은 연결리스트에서 중복 노드를 제거 2. 구현 방법 2-1. 버퍼 이용 : Hash-set 이용 → 연결리스트를 순회하면서 해당 노드를 hash-set에 저장해두었다가 후에 어떤 노드를 보았을 때 hash-set에 이미 값이 존재한다면 중복되는 노드이므로 그 노드는 삭제하는 작업 수행 2-1-1. Hash-set : C++ STL 이용 ( 해싱 자료구조에 대해선 추후에 자세히 공부 할 예정 ) #include → unordered_set 객체명; 이때, index로 접근할 수 없고 iterator로 접근 키 값 중복 허용하지않음 https://cplusplus.com/reference/unordered_map/unordered_map/ https:/.. 2023. 11. 27.
[C++] 연결리스트 분할 1. 알고리즘 설명→ 다음과 같이 연결리스트가 주어지면 두 개의 연결리스트로 나눈다 (이때, 노드의 갯수가 홀수일땐 가운데 기준 노드는 후면 연결리스트에 삽입되도록 함) → 짝수/홀수 케이스 나눌 필요 없어짐 1-1. 구현Linked_list.h#pragma once #include using namespace std; class Node { private: int data; Node* link; public: Node(int item, Node* next) :data(item), link(next) { } Node(int item) : data(item), link(NULL) { } int getData() { return data; } Node* getLink() { return link; } fri.. 2023. 11. 23.
[C++] Reverse_Linked_List (LeetCode 206 문제) https://leetcode.com/problems/reverse-linked-list/description/ Reverse Linked List - LeetCode Can you solve this real interview question? Reverse Linked List - Given the head of a singly linked list, reverse the list, and return the reversed list. Example 1: [https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg] Input: head = [1,2,3,4,5] O leetcode.com => 위 사진과 같이 singly-linked-list를 뒤집는 작.. 2023. 11. 23.