프로그래밍 이름 궁합 찾기 알고리즘

이름 궁합 찾기: 각 획수를 주고 획수를 짝수개씩 묶어 더해나가고 최종적으로 두 개의 수만 남을 때까지 계산하는 방법 문제 링크 코드 (자바스크립트) function matchName(name1, name2) { name1 = name1.split(”).map(c => c.toUpperCase()) name2 = name2.split(”).map(c => c.toUpperCase()) const nameLength = name1.length + name2.length const minLen = Math.min(name1.length, name2.length) const weight = 더보기…

자바스크립트: Fetch (외부 라이브러리 없이 AJAX 사용)

만약 JQuery  등의 외부 라이브러리 없이 AJAX를 사용하려고 한다면 예전에는(혹은 지금도) XMLHttpRequest(MDN 링크)라는 것을 사용해야 했습니다. 이것은 약간 사용하기 복잡했었는데요, ES6(2015)부터 fetch(MDN 링크)라는 기능이 도입되어서 약간 편하게 사용할 수 있게 되었습니다. Promise를 기반으로 하기 때문에 지원하지 않는 웹 브라우저에서는 사용할 수 없습니다. 인터넷 익스플로러에서 사용 가능하게 하려면 Babel 등을 이용해서 변환해야 더보기…

트리 순회: 전위, 중위, 후위 (preorder, inorder, postorder)

트리 자료구조의 순회 방법으로 전위 순회(preorder), 중위 순회(inorder), 후위 순회(postorder)가 있습니다. 출처 링크 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) ☞ 전루왼오 (∠) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) ☞ 중왼루오 (∧) 후위 순회한 더보기…

Git(깃): 이미 존재하는 폴더를 온라인 프로젝트(GitHub)에 추가하기

원본 글 링크 개인적인 목적으로 약간의 부가설명 및 스크린샷을 첨부했습니다.   1. github에 저장소를 만듭니다. https://github.com/new   2. git을 사용할수 있는 터미널을 열어줍니다. 3. 자신이 git에 올리고 싶은 root 폴더로 이동합니다. 4. git디렉토리를 초기화 하여 줍니다. $ git init   5. commit을 하여줍니다. $ git add . $ git commit 더보기…

자바스크립트: 배열 자르기 및 합치기 (예제: 퀵 정렬, 병합 정렬)

배열 자르기 Array.slice(시작인덱스, 끝인덱스) 시작인덱스를 포함하여, 끝인덱스 바로 직전까지 요소를 배열로 반환합니다. var arr = [4, 1, 2, 11, 5, 7, 3] console.log(arr.slice(0, 4)) 결과는 [4, 1, 2, 11] 로 인덱스 0부터 4의 바로 직전까지인 3번까지를 배열로 반환합니다.   배열 합치기 Array.concat(배열1, 배열2, 배열3, …) 파라미터는 1개 또는 그 이상 더보기…

자바(Java) 예제: 재귀 호출(Recursive Call, 재귀 함수, 재귀 알고리즘)

재귀호출 설명 재귀(Recursion) 알고리즘이란 어떠한 문제를 자기 자신을 호출하여 해결하는 과정을 말합니다. 링크 예제 1: 코드 실행 추적 다음은 정보처리산업기사에서 출제된 문제입니다. 다음 코드의 실행 결과는? public class RecursiveExample { public static int recursive(int n) { int i; if (n < 1) return 2; else { i = (2 * 더보기…

자바(Java) 예제: 최대 힙 (Max Heap)

자료구조 학습용 예제입니다. 힙과 배열 힙(Heap): 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 일반적으로 힙 구현시 배열 자료구조를 활용함 배열은 인덱스가 0번부터 시작하지만, 힙 구현의 편의를 위해, root 노드 인덱스 번호를 1로 지정하면, 더보기…

자바(Java): 양쪽 연결 리스트(Doubly Linked List; 더블 링크드 리스트) [자바 공식 제공 & 알고리즘 학습용 예제]

연결 리스트 (자바 공식 제공) ArrayList()와 사용법은 거의 같습니다. 다만 내부 동작 방식이 다릅니다. package blog.dblinkedlist; import java.util.LinkedList; import java.util.List; public class LinkedListTest { public static void main(String[] args) { List<Object> list = new LinkedList<>(); for(int i = 1; i <= 12; i++) { list.add(i); } // 인덱스 바로 뒤에 더보기…

iOS 프로그래밍: 색상 선택기(Color Picker; 컬러 피커)를 앱에 추가하기

원문 바로가기 안타깝게도 iOS용 색상 선택기는 내장되어 있지 않습니다. 주로 타사 라이브러리 또는 프로젝트를 사용합니다만, 가능한 경우 다른 라이브러리를 피하는 것이 좋습니다.   나만의 색상 선택기(Color Picker; 컬러 피커) 만들기 컬러 파커를 만들 수 있는 많은 방법이 있지만, 여기에 개요를 보여주는 단순한 예제가 있습니다. 스토리 보드를 다음과 같이 설정했습니다. 선택한 색상을 더보기…

스위프트(Swift)로 만든 iOS용 스탑워치(StopWatch) 앱 예제

스위프트(Swift)로 만든 iOS용 스탑워치(StopWatch) 앱 예제 사용 도구 Swift, Xcode   깃허브 링크 https://github.com/ayaysir/iOS-StopWatch   제작 시기 (iOS) 2020.2.26 ~ 2020.3.5 (WatchOS) 미정   주요 기능 스탑워치 기능: 시작, 일시정지, 종료 등 로그 기록 및 조회 기능 사용자가 스탑워치 스타일(색상, 폰트, 사이즈)을 꾸밀 수 있음   스크린샷       더보기…