본문 바로가기

전체 글

(72)
[코드트리 조별과제] 거품정렬 & 선택 정렬 https://www.codetree.ai/missions/6/problems/bubble-sort?&utm_source=clipboard&utm_medium=text- 버블정렬: 가장 단순한 정렬 알고리즘- 비효율적인 알고리즘 -> 성능이 좋지 않음- 시간 복잡도 O(N^2)구현 코드import java.util.Arrays;public class BubbleSort { public static void main(String[] args) { int[] arr = {4, 7, 1, 8, 0}; for (int i=0; i arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } System.out..
[코드트리 조별과제] Java 활용한 별찍기 요즘 Java 기초 공부를 하고 있다.당장 다음주 월요일에(내일..) 자바 기초 테스트가 있는데,그 중 별찍기 문제가 있어서 오랜만에 코드트리 들어가서 관련 문제를 다시 풀어봤다(예전에 파이썬으로 풀었던 문제!).코드트리에서 방학 이벤트를 한다는 것은 알고 있었는데 정확히 눌러보지 않아서..(존재만 알고 있던 차에어제 오랜만에 만나게 된 학교 친구가 있었는데요즘 코드트리에서 방학 과제(?를 한다고 그래서 나도 집에 오자마자 읽어보고 참여하기를 눌렀다. 그리고 참여 이후 푼 문제는 '규칙을 찾아 출력하기' 한 문제이다.그래서 해당 문제에 대한 리뷰를 해보고자 한다!📝 모양과 관계 없는 별 출력 / 규칙을 찾아 출력하기https://www.codetree.ai/missions/4/problems/find-..
[모던 JS] CH47. 에러 처리, CH48. 모듈 CH47. 에러 처리 47.1 에러 처리의 필요성 - 프로그램이 강제 종료되지 않고 계속해서 코드를 실행시킬 수 있음 ! 직접적으로 에러를 발생하지는 않는 예외적인 상황이 발생할 수도 있음 : 이 경우 예외적인 상황에 적절하게 대응하지 않으면 에러로 이어질 가능성 const $elem = document.querySelector('#1'); // DOMException // 인수로 전달한 CSS 선택자 문자열로 DOM에서 요소 노드를 찾을 수 없는 경우 // 에러를 발생시키지 않고 null을 반환함 47.2 try...catch...finally 문 에러 처리를 구현하는 방법 1. querySelector나 Array#find 메서드처럼 예외적인 상황이 발생하면 반환값을 if 문이나 단축 평가 또는 옵셔..
[모던 JS] CH46. 제너레이터와 async/await CH46. 제너레이터와 async/await 46.1 제너레이터란? : 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 함수 // 일반 함수와의 차이 1. 제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있음 (yield) 2. 제너레이터 함수는 함수 호출자와 함수의 상태를 주고받을 수 있음 3. 제너레이터 함수를 호출하면 제너레이터 객체를 반환함 46.2 제너레이터 함수의 정의 - function* 키워드로 선언 - 하나 이상의 yield 표현식 포함 - *의 위치는 function 키워드와 함수 이름 사이라면 어디든지 상관없음 : 하지만, 일관성을 유지하기 위해 function 키워드 바로 뒤에 붙이는 것을 권장함 - 제너레이터 함수는 화살표 함수로 정의할 수 없음..
[모던 JS] CH45. 프로미스 CH45. 프로미스 - 전통적인 콜백 패턴이 가진 단점을 보완하며 비동기 처리 시점을 명확하게 표현할 수 있음 45.1 비동기 처리를 위한 콜백 패턴의 단점 45.1.1 콜백 헬 - 비동기 함수 내부의 비동기로 동작하는 코드는 비동기 함수가 종료된 이후에 완료됨 : 비동기 함수 내부의 비동기로 동작하는 코드에서 처리 결과를 외부로 반환하거나 상위 스코프의 변수에 할당하면 기대한 대로 동작하지 않음 - 비동기 함수는 비동기 처리 결과를 외부에 반환할 수 없고, 상위 스코프의 변수에 할당할 수도 없음 : 비동기 함수의 처리 결과에 대한 후속 처리는 비동기 함수 내부에서 수행해야 함! - 필요에 따라 비동기 처리가 성공하면 호출될 콜백 함수와 비동기 처리가 실패하면 호출될 콜백 함수를 전달할 수 있음 콜백 헬..
[모던 JS] CH41. 타이머, CH43. Ajax CH41. 타이머 41.1 호출 스케줄링 - 함수를 명시적으로 호출하지 않고 일정 시간이 경과된 이루에 호출되도록 함수 호출을 예약하려면 타이머 함수를 사용 : 호출 스케줄링 ! 타이머를 생성할 수 있는 함수 : setTimeout / setInterval ! 타이머를 제거할 수 있는 함수 : clearTimeout / clearInterval -> 타이머 함수는 비동기 처리 방식으로 동작함 41.2 타이머 함수 41.2.1 setTimeout / clearTimeout - setTimeout 함수는 두 번째 인수로 전달받은 시간으로 단 한 번 동작하는 타이머를 생성함 - 타이머가 만료되면 첫 번째 인수로 전달받은 콜백 함수가 호출됨 - setTimeout 함수가 반환한 타이머 id를 clearTimeo..
[모던 JS] CH40. 이벤트 CH40. 이벤트 40.1 이벤트 드리븐 프로그래밍 - 처리해야 할 특정 사건이 발생하면 이벤트를 발생시킴 - 이벤트가 발생했을 때 호출될 함수를 이벤트 핸들러 - 이벤트가 발생했을 때 브라우저에게 이벤트 핸들어의 호출을 위임하는 것을 이벤트 핸들러 등록 40.2 이벤트 타입 - 이벤트의 종료를 나타내는 문자열 - 교재 p. 755~ 757 40.3 이벤트 핸들러 등록 40.3.1 이벤트 핸들러 어트리뷰트 방식 - 이벤트 핸들러 어트리뷰트 값은 암묵적으로 생성될 이벤트 핸들러의 함수 몸체 - 알아둘 필요는 있지만 사용하지 않는 것이 좋음 40.3.2 이벤트 핸들러 프로퍼티 방식 - 이벤트 핸들러는 이벤트 타깃 또는 전파된 이벤트를 캐치할 DOM 노드 객체에 바인딩함 - 이벤트 핸들러 어트리뷰트 방식의 H..
[모던 JS] CH37. Set과 Map, CH42. 비동기 프로그래밍 CH37. Set과 Map 37.1 Set - Set: 중복되지 않는 유일한 값들의 집합 - 배열과 유사하지만 차이가 있음 - 수학적 집합의 특성과 일치함 (수학적 집합을 구현하기 위한 자료구조) 37.1.1 Set 객체의 생성 - Set 생성자 함수로 생성 - 인수를 전달하지 않으면 빈 Set 객체 생성 - 이터러블을 인수로 전달받아 Set 객체를 생성함 - 이터러블의 중복된 값은 Set 객체에 요소로 저장되지 않음 const set = new Set(); console.log(set); // Set(0) {} conset set2 = new Set('hello'); console.log(set2); // Set(4) {"h", "e", "l", "o"} 37.1.2 요소 개수 확인 - Set.prot..