목록분류 전체보기 (58)
-
Javascript 데이터 객체와 JSON 생성 방법 1. JSON 정의 JSON은 경량(Lightweight)의 DATA-교환 형식 Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다. JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다. 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다. 클라이언트와 서버가 간에 정보를 교환하기 위한 데이터 형태 2. Java Script와의 관계 자바스크립트의 모든 변수들은 참조 변수이다. var n = new Number(3); var n = new Boolean(true); var s = ..
배열 객체 초기화 var nums = new Array(); var nums = new Array(5, 10, 21, "hello"); var nums = new Array(5, 10, 21, "hello", new Array(2,3,4)); // 어떠한 타입도 마음대로 초기화해서 할당할 수 있다. // --> alert(nums[4][1]); // 3 출력 splice() 메소드 var nums = new Array(5, 10, 21, "hello"); nums.splice(1); // 배열에서 index 1 부터 뒤에는 지워진다. nums.splice(1,1); // index 1 부터 1개 만큼 지워라 nums.splice(1,1,"ho"); // 2 번째 값을 ho로 변경 Object 자바스크립트..
https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어져 있다. 시리얼 번호는 중복되지 않는다. www.acmicpc.net #include #include #include #include using namespace std; struct info { int sum; string str; }; vector v; bool F(info a, info b) { if (a.str.length() != b.str.length()) { return a.str.length() < ..
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. www.acmicpc.net 1. Stable Sort 라고 해서 괜히 무턱대고 병합 정렬 사용했다가는 낭패. 너무 복잡해진다. 2. Stable Sort 가 아닌 Sort 를 사용해서 똑같은 결과를 낼 수 있다. 3. 문제를 잘 읽어야함. 나이순 + 나이가 같으면 가입순이다. 이름 사전순 비교하지 않는다. 첫번째 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #incl..
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자열이고, 길이는 10자리를 넘지 않는다. www.acmicpc.net 만약 입력이 "ABC 10 20 30" 으로 들어 온다면? scanf("%s %s %s %s", a, b, c, d) or cin >> a>> b >> c >> d 로 처리 가능! //cout name >> k >> e >> m; v.push_back({ name,a..
https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net C++에 sort를 사용하면 된다. 입력이 5,000,000이니 O(nlogn)이면 가능하다고 판단됨. 다만, cout / cin 대신 scanf와 printf 를 사용해야함. 입출력 속도가 차이가 많이 나기에 이것만 바꿔도 시간초과냐 통과냐가 갈림. 해당 문제는 Quick Sort 대신 Quick Selection Sort를 사용하면 O(n)에 해결할 수 있다고함 #include #include #include #include using names..
- Unstable Sort - 최악의 경우 O(N^2) // 평균적으로 O(nlogn)이지만 보장할 수 없다. - 하나의 리스트를 피벗(pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법이다. --> 분할 정복 적용 피봇을 보통 첫번째 원소로 잡고, Index가 1부터 n-1 을 탐색 왼쪽에서 오른쪽으로(i=1 -> i++) 탐색하며 피봇보다 큰 값을 확인함과 동시에 오른쪽에서 왼쪽으로(j=n-1 -> j--) 탐색하며 피봇보다 작은 값을 확인한다. i와 j 가 엇갈리지 않는다면 i와 j에 해당하는 값을 바꾼다. 만약 엇갈린다면 지금 피봇값과 j 값을 바꾼다. j 인덱스에 위치한 피봇값..
- 대표적인 "분할정복" 방법을 채택한 알고리즘 - 퀵 정렬의 보완된 버전 -> 퀵 정렬은 피벗 값에 따라서 편향되게 분할할 가능성이 있다는 점에서 최악의 경우 O(N^2) -> 하지만 일반적인 경우에서 퀵정렬보다는 느리다. 합병 정렬은 "배열을 생성하는" 시간이 있기 때문이다. 정렬하고자 하는 배열의 길이가 길면 길수록 차이가 난다. - Stable Sorting - 최선/최악/평균 시간 복잡도 : O(nlogn) 자세한 내용은 https://blog.naver.com/ndb796/221227934987 7. 병합 정렬(Merge Sort) 지난 시간까지 시간 복잡도 O(N ^ 2)인 선택 정렬, 버블 정렬, 삽입 정렬 알고리즘을 공부했습니다. 이어... blog.naver.com 여기서 복습하는 것으..