자바스크립트 코딩테스트 예제: 유지비 청구 날짜 구하기

문제 유지비는 매달 k일에 청구됩니다. 그 날이 주말(토요일 & 일요일)이라면, 유지비는 제일 가까운 주말에 청구됩니다. 1월(매 연도의 첫 달)의 첫째 주 첫 날의 요일이 day로 주어지며, k는 매달 유지비를 지불해야 하는 날짜일 때 이러한 파라미터를 받아 1월부터 12월까지 k가 주말이면 0, 아니라면 1을 반환하는 배열을 반환하는 solution 함수를 작성하세요.   제약 더보기…

자바(Java) 예제: 인접한 사방향(상하좌우, 동서남북) 탐색 (방향 벡터 1)

자바에서, 예를 들어 지도인 map이 있고, 여기에서 “옷”이 사람인 경우 그 사람 주변(상하좌우, 동서남북)에 무엇이 있는지 탐색하는 예제입니다. dx, dy 배열을 설정하고 (예제에서는 dir라는 이름의 2차원 int 배열로 했습니다.) 맵을 2중 for문을 돌면서 사람(“옷”)을 만나면 그 안에서 또 4번 반복하는 for문을 실행해 주변에 무엇이 있는지 확인합니다. dx(dir[0]), dy(dir[1])의 값에 따라 탐색 더보기…

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

이름 궁합 찾기: 각 획수를 주고 획수를 짝수개씩 묶어 더해나가고 최종적으로 두 개의 수만 남을 때까지 계산하는 방법 문제 링크 코드 (자바스크립트) 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 = 더보기…

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

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

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

배열 자르기 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); } // 인덱스 바로 뒤에 더보기…