일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리눅스
- BFS
- spa 라우팅
- SWEA
- 알고리즘
- 연결리스트구현
- 검색어최적화
- 드래그방지
- 주피터
- 서버사이드랜더링
- 파이썬
- 리스트구현
- 리스트
- jnut
- 파이프 옮기기
- 타입변수
- 딥러닝
- 텐서플로우
- SPA
- BOJ
- 타입제한
- 스프링
- BOJ17070
- Spring
- Java
- 인공지능
- 머신러닝
- 고쳐야해!
- let과var차이
- 백준
- Today
- Total
목록프로그래밍/알고리즘 (5)
林's
List 는 데이터들이 기차처럼 일렬로 나열되어 있는 자료구조를 의미합니다. 기차의 구조처럼, 연결 리스트 또한 머리(Head)와 꼬리(Tail)가 있고, 머리와 꼬리, 그리고 이들 사이에 자료를 저장해요. 현실에선 앞 에서부터 1호차, 2호차, 3호차, ... 순으로 부르고 이 안에 사람들이 들어가죠? 이를 일반화해서 Node라는 클래스를 만들어볼까요? 사전지식 Generic: https://www.yunki.kr/69 1. Node class Node { private Node next; private T data; public Node(T data) { this.data = data; this.next = null; } } 멤버의 역할은 다음과 같습니다. next 자신과 연결된 다음 호차를 기억하기..
달팽이 수열이란 그림과 같이 2차원 배열의 숫자들이달팽이의 껍질처럼오름차순으로 빙글빙글 채워지는 규칙을띄고 있습니다. 규칙을 파악하는 것은 어렵지 않았지만, 코드로 구현할 때는 해결방법이 쉽게 떠오르지 않아 상당한 시간을 들였던 기억이 납니다. DFS를 사용할 수도 있지만, 이 글에서는 무한 루프와 for 문 2개를 가지고 해결해보려 합니다. 그런데 정답을 알아보기 전에, 여러분은 어떠한 규칙을 발견할 수 있으셨나요? 1을 시작으로 값이 1씩 증가한다. 오른쪽으로 갔다, 아래로 갔다 왼쪽으로 갔다, 위로 갔다. 가 반복된다. 와 같은 규칙을 어렵지 않게 발견할 수 있었을 겁니다. 여기서 1번을 구현하기 위해서는 num 이라는 변수를 1로 초기화해서 num++; 로 하나씩 증가시키면 될 것 같아 보입니다...
문제 풀고오기 1. 큐의 특징 큐의 특징을 살펴보겠습니다. 1). 비선형 자료구조 큐는 배열처럼 중괄호[]에 번호를 넣어서 참조할 수 있는 선형구조가 아닌 비선형 구조이기 때문에. 일반적으로 Node 를 담는 링크드 리스트로 구현합니다. 2). 선입선출(First in First out) 큐는 대기열이라는 뜻을 가지고 있습니다. 선입선출은 먼저 들어온게 먼저 나간다는 뜻으로, 큐는 현실세계에서도 쉽게 찾아볼 수 있는 자료구조입니다. 2. 자료구조 설계 점심시간에 식당앞에서 밥을 먹기 위해 서 있는 사람들을 생각해봅시다. 대략 다음과 같은 특징을 갖고 있으며 이를 모방하여 괄호에 있는 함수로 구현을 해볼 생각입니다. 1). 가장 앞의 사람과 가장 뒤의 사람이 누군지 알 수 있다.( (front(), bac..
이전 포스팅에서 다뤘던 2진수 출력은 스택과 재귀를 연습하기 위함이었습니다.비트연산을 사용하면 더욱 쉽고 빠르게 10진수를 2진수로 바꿀 수 있습니다.물론 음수도 변환 가능해지겠죠?. 스택도 필요없이 간단한 char 문자열 배열만 있으면 됩니다.12345678910111213141516171819inline char* toBinaryString(const int & n){char* arr = new char[33];for (int i = 31; i > -1; i--){arr[31-i] = ((n >> i) & 1)+48;// 48이 char에서 '0'임}arr[32] = '\0';return arr;} int main(){int a = -1;char* bin = toBinaryString(a);cout
정말 무식하게 0부터 1씩 증가시키면서 무식하게 이 수가 감소하는 수 인지를 매 번 while문으로 체크를 하다가 이건 도저히 아닌 것 같아서고수님의 풀이를 보았다. 가장 신박하면서도 수학적인 원리로 이 문제를 접근하셨는데. 10진수로 만들 수 있는 감소하는 수는 1023개밖에 되지 않는 다는 사실로부터 출발하는 것이었다. 왜 감소하는 수는 1023개밖에 존재하지 않는 걸까?우리는 중등수학(고등학교)의 집합단원을 공부하면서 n개의 원소로 만들 수 있는 부분집합의 개수는 총 2^n개라는 것을 배운 적이 있다.예를 들어 1과 2로 만들 수 있는 부분집합은{ Ø : 공집합 }{ 1 }{ 2 }{ 1 , 2 }로 총 4가지가 있고 2^(2개) = 4와 일치한다는 것을 알 수 있다.공식은 저렇게 되어 있지만, 좋..