본문 바로가기

programming study/Algorithm

(275)
[프로그래머스] 없는 숫자 더하기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 없는 숫자 더하기 function solution(numbers) { let answer = 0; // 0 ~ 9까지 검사 for (let i = 0; i
[프로그래머스] 부족한 금액 계산하기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 부족한 금액 계산하기 function solution(price, money, count) { // 부족한 금액 let answer = 0; // count만큼 반복 for (let i = 1; i
정렬 알고리즘 본 내용은 노마드 코더님의 강의를 토대로 작성하였습니다. 1. 정렬이란 무엇을 정리하는 것 A부터 Z까지 정렬 큰 수에서 작은 수 기준으로 정렬 이진검색처럼 빠른 알고리즘을 사용하려면 정렬이 선행되어야 하는 경우가 있음 2. 버블정렬 처음부터 끝까지 2개의 아이템을 선택하고 비교 왼쪽이 오른쪽보다 크면 교환 위 프로세스를 정렬이 완료될 때까지 반복(한 싸이클) 배열의 N-1의 아이템을 비교해야 함 아이템이 6개면 5번 비교 최악의 경우 모든 싸이클마다 모든 아이템을 비교해야 함 최악의 경우 O(n^2) 시간 복잡도를 가짐 3. 선택정렬 전체 아이템 중에서 가장 작은 아이템의 위치를 변수에 저장 배열에서 가장 작은 숫자가 어디에 있는지를 알고 있는 상태 가장 작은 숫자를 첫번째 위치의 아이템과 바꿈 다음 ..
Big O 본 내용은 노마드 코더님의 강의를 토대로 작성하였습니다. 1. 알고리즘 속도란 완료까지 걸리는 절차의 수로 결정 같은 작업을 수행할 때 적은 절차로 해결하는 알고리즘이 효율적인 알고리즘 2. Big O 알고리즘의 속도를 표현하는 방법 input에 따라서 얼마의 절차가 필요한지를 표현 시간복잡도를 빠르게 설명 함수의 디테일은 관련 없음 상수를 신경쓰지 않음 Linear Search N개면 N개의 절차가 필요 O(N) 시간 복잡도를 가짐 O(1) input에 상관없이 동일한 수의 절차로 끝낼 수 있는 경우 O(1)의 시간 복잡도를 가짐 input에 상관이 없이 200개의 절차로 끝내는 경우에도 O(1)의 시간 복잡도를 가짐 항상 선호되는 알고리즘 # input이 아무리 많아도 끝내는 절차는 하나 # 상수 시..
Linear Search & Binary Search 본 내용은 노마드 코더님의 강의를 토대로 작성하였습니다. 1. Linear Search 처음부터 순차적으로 탐색 특정 값을 10개의 배열에서 찾을 때 처음부터 끝까지 탐색하는 것 최악의 경우는 목표 값이 배열의 마지막에 있거나 아예 없을 수 도 있음 Linear Time Complexity 선형 시간복잡도 배열이 커질수록 검색 시간이 길어짐 input이 많아질수록 수행 시간이 선형적으로 증가 2. Binary Search 정렬된 배열에서만 사용 가능 Binary 반으로 쪼개는 것 1 ~ 10으로 이루어진 배열이 있을 때 처음부터 검색하지 않고 정중앙에서 검색을 시작 해당 수가 목표 숫자보다 큰지 작은지를 비교 작은 경우, 정중앙의 왼쪽 큰 경우, 정중앙의 오른쪽 위 프로세스를 목표값을 찾을 때까지 반복 ..
[프로그래머스] 약수의 개수와 덧셈 - python 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 파이썬 코드 # 약수의 개수와 덧셈 # 약수를 세는 함수 def count_measure(number): count = 0 for j in range(1, number): if number % j == 0: count += 1 return count def solution(left, right): answer = 0 # 약수 구하기 for i in range(left, right + 1): # 약수의 개수 count = count_measure(i) # 짝수인 경우 더하기 if count % 2: answer += i print(i) # 홀수이면 빼기 else: answer -= i print(i) return answe..
[프로그래머스] 숫자 문자열과 영단어 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 숫자 문자열과 영단어 function solution(s) { let answer = ''; // 영단어에서 숫자를 표시한 객체 const wordToNumber = { 'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9, } // numbersToWrods의 키 const wordToNumberKeys = Object.keys(wordToNumber); // 주어진 s를 순회 // 넣을 단어 let word = ''; for (let chr o..
[프로그래머스] 이진 변환 반복하기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 이진 변환 반복하기 function solution(s) { let answer = []; // 0을 세는 카운터 let countZero = 0; // 변환 횟수 let countConvert = 0; // s를 담을 변수(배열로 변환 예정) let sArr = s // 1이 될때까지 실행 while (sArr !== '1') { // 0을 제거 sArr = sArr.split('').filter((val) => { // 0인 요소 세기 if (val === '0') { countZero += 1; } // 0이 아닌 것만 return return val !== '0'; }).leng..