반응형

알고리즘 35

프로그래머스) 구명보트

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 나의 풀이) 이번 풀이는 내가 풀지 못하였다. 즉 질문하기 란에 사람들이 질문하고 답변한 것에서 힌트를 많이.. 얻어 풀었다는 뜻이다. 문제에 나와있듯 이 알고리즘은 탐욕법 알고리즘이다. 즉 모든 부분에서의 최적해를 구하는 것이 아닌 그 상황에서의 최적해를 구한다는 뜻이다. 나는 이중 for문, while문, 재귀 함수를 사용하여 테스..

IT/Algorithm 2021.11.23

프로그래머스) 큰 수 만들기

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 나의 풀이 function solution(number, k) { const numArray = [...number]; const stack = []; while (numArray.length) { if (k > 0 && stack[stack.length - 1] < numArray[0]) { stack.pop(); k -= 1; continue; } stack.push(numArray.shift()); } return stack.slice(0, stack.length - k).join(""); } 하지만 테스트 코드 10번을 계속 실패하..

IT/Algorithm 2021.11.21

프로그래머스) 124 나라의 숫자

https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 나의 풀이 function solution(n) { const answer = []; while (n > 3) { if (!(n % 3)) { n = parseInt(n / 3) - 1; answer.push(4); continue; } answer.push(n % 3); n = parseInt(n / 3); } answer.push(n === 3 ? 4 : n); return answer.reverse().join(""); } 재귀함수를 사용하고 싶었는데 도저히 짤 수가 없었다.. 문제 규칙상 124만 사용할 수 있지만 3진법으로 ..

IT/Algorithm 2021.10.29

프로그래머스) 멀쩡한 사각형

https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 나의 풀이 function isCoprime(a, b) { return a % b ? isCoprime(b, a % b) : b; } function solution(w, h) { return isCoprime(w, h) === 1 ? (w * h) - (w + h - 1) : (w * h) - (w + h - isCoprime(w, ..

IT/Algorithm 2021.10.28

Hash Table에 대하여

해시 테이블이란? 어떤 특정 값을 받으면 그 값을 해시 함수에 통과시켜 나온 리턴 값을 인덱스에 저장하는 자료구조이다. 그렇다면 왜 해시 테이블을 사용할까? 직접 주소 테이블 (Direct Address Table) 해시 테이블은 직접 주소 테이블이라는 자료구조에서부터 출발한다. 직접 주소 테이블은 입력받은 value가 곧 key가 되는 데이터 매핑 방식이다. 내가 소수 찾기 알고리즘을 풀 때 소수만 남기기 위해서 0~n까지의 배열을 만들었는데 바로 그 방식인 것이다. index 0 1 2 3 4 5 6 7 8 value 0 1 2 3 4 5 6 7 8 찾고자 하는 값과 테이블의 인덱스가 동일하므로 값이 저장된 공간에 바로 접근해서 값을 가져올 수 있으므로 시간 복잡도는 O(1)이다. 마찬가지로 테이블에..

IT/Computer Science 2021.10.28

프로그래머스) 문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 나의 풀이 function solution(s) { if (s.length === 1) { return 1; } const answer = []; let string = s.split(""); let zipList = []; let count = 1; for (let i = 1; i { if (JSON.stringify(acc) === JSON.strin..

IT/Algorithm 2021.10.28

프로그래머스) 최대공약수와 최소공배수

https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 나의 풀이 function solution(n, m) { const nDivisorList = []; const mDivisorList = []; for (let i = 1, j = 1; i b라고 가정하였을 때, a를 b로 나누었을 때 나머지 r이 존재한다면 a와 b의 최대공약수는 b와 r의 최대공약수와 같다는 원리이다. 이에 ..

IT/Algorithm 2021.10.27

프로그래머스) 시저 암호

https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 나의 풀이 function solution(s, n) { const upperList = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; const..

IT/Algorithm 2021.10.27

프로그래머스) 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 나의 풀이 function solution(strings, n) { return strings.sort((a, b) => { if (a[n] b[n]) { return 1; } return a < b ? -1 : 1; }); ..

IT/Algorithm 2021.10.25

프로그래머스) 소수 찾기

https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 나의 풀이 테스트는 통과하는데 효율성 테스트에서 계속해서 광탈하였다.. 그러던 중 에라토스테네스의 체라는 '소수를 찾는 방법'을 알게 되어 효율성 테스트에서도 통과할 수 있었다. 에라토스테네스의 체의 알고리즘은 위키에서 확인할 수 있다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A..

IT/Algorithm 2021.10.25
반응형