본문 바로가기

분류 전체보기

(7)
[Algorithm] 이진 탐색(Binary Search) 안녕하세요! MightyCoder입니다. 2021년 첫 포스트네요!(사실 이전 포스트도 몇개 없었지만 앞으로 더 열심히 블로그를 운영할 계획입니다..ㅎㅎ) 이번 포스트에서는 Javascript를 이용한 이진 탐색(Binary Search)을 소개하려고 합니다. 1. 알고리즘 설명 이진 탐색은 탐색할 범위를 축소해가며 원하는 값을 찾는 탐색 알고리즘입니다. 모든 탐색 범위를 전부 탐색하는 선형 탐색(Linear Search)보다 속도 면에서 빠르다는 장점이 있습니다. 그렇다면 어떠한 방식으로 탐색 범위를 축소하는 걸까요? 이진 탐색을 설명하기 위해 먼저 10개의 정수를 포함하고 있는 배열 arr를 선언하겠습니다. let arr = [1,4,6,2,10,3,5,8,9,7]; 이제 위의 배열에서 8을 찾아보겠..
[프로그래머스] 키패드 누르기 (2020 카카오 인턴십) 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4..
[문제풀이]백준 - 계단 오르기 알고리즘 분류: Dynamic Programming 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 ..
[문제풀이] 프로그래머스 - 소수찾기(완전탐색) 프로그래머스 - 소수 찾기(완전 탐색) 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return 17 3 011 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1..
[Vanilla JS]window.innerHeight를 사용한 스크롤 애니메이션 구현 스크롤 애니메이션은 스크롤을 내릴때 애니메이션이 발동되는 참 잘쓰면 좋은 효과이다. 현재 제작중인 포트폴리오 웹사이트에서 스크롤 애니메이션을 사용하기 위해 한번 공부해봤다. 그 이전에 자바스크립트로 스크롤 애니메이션을 사용하기 위해서는 먼저 window, viewport, 그리고 요소의 크기에 대한 개념을 잡고 시작하는게 좋다. 1. window와 viewport 1) window HTML에서 윈도우란 브라우저 자체를 뜻한다. 말로 설명하면 어려울 수도 있으니 그림으로 표현하자면 다음과 같다. window의 경우에는 브라우저 자체를 뜻한다. 자바스크립트에서 윈도우의 크기를 구하는 함수로는 다음의 것들이 있다. window.innerHeight //네비게이션 창을 제외한 높이 window.innerWidt..
MySQL 2편 - 데이터의 입력과 수정 전편에서는 데이터 입력을 위한 테이블, 그리고 테이블을 위한 데이터베이스(혹은 schema)를 만들었다. 이번편에서는 저번편에 만든 myFirstTable이라는 테이블에 데이터를 입력하고 입력된 데이터를 수정하는 작업을 소개하겠다. 1.데이터 입력하기 데이터를 입력해주기 전에 먼저 우리가 만든 테이블을 다시 확인하면서 어떠한 컬럼들이 존재하는지 살펴보자. 다음의 커맨드를 이용하면 우리가 만든 myFirstTable에 존재하는 컬럼과 그 컬럼들의 속성들을 확인할 수 있다. DESC myFisrtTable 우리가 제대로 테이블을 만들었다면 다음과 같은 결과 화면을 볼 수 있을 것이다. +---------+--------------+------+-----+---------+----------------+ | ..
MySQL 1편 - MySQL 구조와 시작 1. MySQL에 대한 간단 개념 1.1. MySQL이란 MySQL은 ORACLE에서 출시된 RDBMS(Relational DataBase Management System)으로써 관계형 데이터베이스 관리 시스템이다. 그럼 여기서 관계형 데이터베이스란 무엇일까? 관계형 데이터베이스란 데이터들이 테이블로 나타나지며 key값과 value값의 관계로 나타나는 종류의 데이터베이스를 뜻한다. 우리가 흔히 사용하는 마이크로소프트의 엑셀이 관계형 데이터베이스를 표현하는 가장 좋은 예이다. 1.2. MySQL의 구조 MySQL의 구조는 데이터베이스 서버 -> 스키마 -> 테이블의 순서로 정의할 수 있을 것 같다. 다시말해서 데이터베이스 서버는 여러개의 스키마(schema)=데이터베이스(database)를 담고 있고 sc..