![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/TKRxz/btrXoC2Sfkh/uYv7sIUl5VSZMyXExTOkyK/img.png)
[문제] [풀이] - 당연히 내가 스스로 못 풀었고 다른 사람 풀이를 본 후에 풀었다. - 다 괜찮은 방법이었지만 그 중 괜찮은 2가지 방법을 올린다.(개인적으로 나는 2번이 더 깔끔하다.) - 아래의 코드들은 풀이 참고 후 내가 직접 손으로 적은 코드들이다. - 정규식을 사용해서 풀은 CASE도 있었는데 그건 신의 영역이라 도저히 따라할 엄두도 안 났다. 1. class Solution { public int solution(String[] babbling) { int answer = 0; for(int i = 0; i 10 || babbling[i].length() < 2) { continue; } else ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/J99bE/btrWR89q7dx/870YHYDuDifQzqMdwZC9L0/img.png)
● 연결리스트(Linked List) - 이전 글에서 작성한 배열의 단점을 어떻게 극복할 수 있을까? - 똑똑한 사람들이 아래와 같이 생각했다. - 배열이 연속된 메모리 공간을 할당하는 것이 문제이니까 저장하려는 데이터들을 메모리 공간에 '분산'해서 할당하면 되지 않을까? 그리고 이렇게 분산된 데이터들을 서로 '연결'해주면 되지 않을까? - 이러한 분산 및 연결은 노드(Node)가 있기에 가능하다. - 노드의 구조는 (1). 데이터를 담는 변수 하나와 (2). 다음 노드를 가리키는 변수 하나를 가지고 있다. - 데이터가 필요한 만큼 노드를 만들어 저장하고 다른 노드를 가리켜서 서로 연결해주면 된다. - 이러한 모습 때문에 Linked List(연결 리스트) 라고 부르는 것이다. - 위 그림에서 볼 수 있..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kORsH/btrWZXFh9ED/qrocbI9o77BHwkbstC3Jkk/img.png)
- 배열은 프로그래밍 언어에서 기본적으로 제공하는 자료구조이다. - 글을 읽기에 앞서 일반적인 프로그래밍 언어에서의 전형적인 배열과 JS의 배열은 차이점이 있다는 것을 알아두자 1. 프로그래밍 언어에서의 전형적인 배열 - 일반적으로 프로그래밍 언어에서 배열을 선언할 때는 아래와 같이 선언과 동시에 배열의 크기를 알려준다. int arr[10] = {1, 2, 3, 4, 5}; - 위와 같이 선언한 배열은 메모리에서 아래와 같은 모습을 하고 있다 - 운영체제가 메모리에서 숫자 10개가 들어갈 수 있는 연속된 빈 공간을 찾아 순서대로 1, 2, 3, 4, 5 를 할당한다. - 10개 중 할당되지 않은 부분에는 의미 없는 더미 데이터가 저장된다. - 운영체제는 배열의 시작 주소(= 숫자 1이 들어간 주소)만 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rzEes/btrWRAdapOC/31W1jopfRflAT7NKEhBLyK/img.png)
- 자료구조와 알고리즘을 구현하는데 필요한 환경을 만들어보자 - JS, VScode, NodeJS가 필요하다. - JS, VScode는 따로 준비할 필요가 없고(이미 있으니) Node.js만 다운받을 것이다. - Node.js는 JS를 실행시키는 JS 엔진이라고 생각하면 된다. - PowerShell을 킨 후 node 라고 입력, 아래 사진처럼 되면 설치 완료 - 폴더를 원하는 곳에 만든 후 VSCode에서 해당 폴더를 열어보자 - 그 후 test.mjs 파일을 만들자. 여기서 확장자인 .mjs는 Javascript 모듈 파일을 의미한다. - 특정 자료구조가 다른 자료구조를 만드는데 사용되기도 하기 때문에 재사용을 위해 모듈로 만드는 것이다. - 테스트 코드를 작성한 후 Node.js로 실행시켜 보기전에..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cWIUKJ/btrWQY6EYvP/JMO4kxVF4EA9Jf7dDA0Gok/img.png)
- 이전 글에서 자료구조에 따라 알고리즘이 달라지며 동일한 자료구조일지라도 구현할 수 있는 알고리즘은 천차만별이라는 것을 배웠다. - 떠오르는 수 많은 알고리즘 중 가장 정확하고 효율적인 최선의 알고리즘을 구현하는 것이 중요하다. - 그렇다면 좋은 알고리즘이라는 것은 무엇일까? - 이는 주어지는 요구사항에 따라 달라진다. - 누군가는 메모리 사용량의 최적화를 지향하는 알고리즘을 원할수도 있고 또 누군가는 메모리 사용량은 상관 없이 빠른 속도를 원할 수도 있다. - 하지만 일반적으로는 알고리즘의 '속도'를 성능의 척도로 여긴다. 이를 시간복잡도라고 한다. ※ 시간복잡도 : 특정 알고리즘이 어떤 문제를 해결하는 데 걸리는 시간 - 문제는 이러한 시간을 측정하는 것이 사실상 불가능한데 그 이유는 사용자의 컴퓨..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CPDZO/btrWUbQV3IE/HbFtkkv36b6l4PMxzlbMH1/img.png)
- 프로그램은 자료구조와 알고리즘으로 이루어져있다. ● 자료구조 - 자료구조는 데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타낸다. - 흔히 사용하는 변수, 배열도 사실은 수 많은 자료구조 중 하나이다. - 성적의 평균을 구하는 코드를 작성한다고 했을 때 아래와 같이 할 수 있다.(왼쪽이 변수, 오른쪽이 배열을 사용했을 때) - 데이터를 변수에 저장하냐 배열에 저장하냐에 따라 처리 방법이 달라진다. 변수와 배열이 저장된 모양도 다르고 사용 방법도 다르기 때문이다. - 즉, 자료구조에 따라서 처리 방법이 달라지는 것이다. ● 알고리즘(자료구조가 바뀌면 알고리즘도 달라진다.) - 어떤 문제를 해결하기 위한 확실한 방법 - 평균을 구하라는 과제가 주어졌을 때 떠오르는 해결 방법은 무수히 많을 것이다. ..
- Total
- Today
- Yesterday
- java
- Stream
- 코테
- Advanced Stream
- DART
- 빅데이터
- OS
- Java8
- db
- git
- 프로그래머스
- 빅데이터 분석기사
- Spring Boot
- SQL
- node.js
- 메모리
- Phaser3
- spring
- 프로세스
- MySQL
- 알고리즘
- 코딩테스트
- nosql
- 자료구조
- API
- Phaser
- SpringBoot
- jpa
- 운영체제
- MongoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |