본문 바로가기

프로그래밍 언어

(83)
버블 정렬 Bubble Sort 오름차순으로 구현하기 버블 정렬 Bubble Sort 성균관대학교 소프트웨어학과 조대호 교수님의 2020년도 2학기 알고리즘 수업을 듣고 수행한 과제입니다. 값을 오름차순으로 정렬하는 버블 정렬을 C로 구현한 코드입니다. pseudo code BUBBLE_SORT(A): 1. for i = 0 to A.length 2. for j = 0 to A.length-1 3. if A[j] > A [j+1] 4. swap A[j] and A[j+1] input and output conditions /* - Test the function with the following three types of inputs. 1) int A[100] : filled by rand()%1000, execute srand(time(NULL)) fir..
Hash Table : separate chaining Hash Table : separate chaining 성균관대학교 소프트웨어학과 조대호 교수님의 알고리즘 수업을 들으며 수행했던 과제입니다. rand() 함수로 랜덤 값들을 뽑아 해시 테이블에 적절한 해시 함수를 적용하여 삽입하는 코드입니다. 해시 함수는 전역 변수 N 의 값으로 설정할 수 있습니다. source code #define _CRT_SECURE_NO_WARNINGS #include #include #include typedef struct Node { int key; int value; struct Node* next; } Node; typedef struct listItem { Node* head; Node* tail; int length; } ListItem; ListItem* hash..
[프로그래머스 코딩테스트 연습] BFS/DFS 3. 단어변환 BFS/DFS 3. 단어변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> cog와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지..
[프로그래머스 코딩테스트 연습] 스택/큐 2. 기능개발 스택/큐 Stack/Queue 2. 기능 개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의..
[프로그래머스 코딩테스트 연습] 정렬 3. H-index 정렬 Sort 3. H-index 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. ..
[프로그래머스 코딩테스트 연습] 완전 탐색 1. 모의고사 완전탐색 Exhaustive Search 1. 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배..
[프로그래머스 코딩 테스트 연습] 정렬 1. K번째수 정렬 1. K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 1..
Javascript) Promise 알아보기 프론트엔더 인턴을 하면서 사용자가 업로드한 파일을 서버로 보내고, 서버에 저장된 데이터를 가져와 프론트엔드에 랜더링해야 했습니다. 처음 해보는 일이라 구글링 열심히 하고, 많이 해매면서 겨우 해냈는데 이때 처음 접했던 Promise라는 개념에 대해 이번 글에서 설명하겠습니다. 제대로 사용해보기 전에 공부 차원에서 기록하는 글이기 때문에 Reference들을 많이 참고 하였습니다. Promise 란? Promise의 개념 자바스크립트는 대부분이 비동기 패턴으로 이루어집니다. 어떤 작업을 요청하면서 콜백 함수를 등록하면, 해당 작업 완료 결과를 나중에 콜백 함수를 통해 알려주는 방식이죠. 프로미스는 이러한 자바크스립트의 비동기 처리에 사용되는 객체입니다. 쉽게 말해, 지금은 요청한 것이 없으니 이상이 있으면..