코딩테스트(15)
-
완전탐색 (Brute-Force)
| 완전탐색 완전탐색 (Brute-Force)는 알고리즘이라고 지칭하기는 어렵지만 문제를 해결할 때 필요한 순간이 오며 간단하지만 풀이에는 난이도가 있는 알고리즘이다. 모든 경우의 수를 전부 탐색하기에 무식한 풀이 기법이라는 소리도 있다. 유튜브에서 본 설명을 들었을 때 10억이 든 금고의 암호를 푼다고 한다면 4자리의 암호를 모든 경우에서 조합하여 금고의 암호를 풀것이다. 0000 -> 0001 -> 0002 이런 순서로 정답이 나올때 까지 시도를 할것이다. 여기서 느껴지는점은 완전탐색의 시간복잡도는 N의 크기에 따라 가진다. 이 방법은 간단하고 직관적이지만 경우의 수가 많아질수록 계산 시간이 급격하게 증가할 수 있다 | 완전탐색의 과정 1. 모든 경우의 수를 생성 2. 경우의 수 계산 3. 조건 충족..
2024.01.08 -
빅오 표기법 (big O notation)
요즘 알고리즘 스터디도 하고 프로그래머스 코딩테스트를 풀고있다. 문제를 마주쳤을 때 문제에 대해 이해도 못했을 뿐만 아니라 그 문제를 어떻게 풀어야되지 라는 막막함도 있었다. 그리고 문제가 해결했을 때 모든 코드의 분석과 해답은 프로그래머스에서 정답이냐 탈락이냐 거기에만 맡겼다. 하지만 내 넘겨 받는 데이터의 갯수가 예시에서는 5개지만 최대 100,000개 까지 넘어온다고 했을 때 나의 코드는 100,000번 연산을 해서 값을 리턴하게 된다. 이러한 점에서 Big O 표기법을 지키며 코드를 작성해야겠다 라고 마음 먹었다. | 빅오 표기법 이란? 알골리즘의 효율성을 의미한다. 효율성은 데이터의 갯수에 따라 기본 연산의 횟수를 의미한다. 예를 들어서 택배 트럭에 택배상자가 3개만 있고 트럭에는 총 500개 ..
2023.09.13 -
[JS] 배열의 유사도
1. 문제설명 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요. 제한 조건 1 ≤ s1, s2의 길이 ≤ 100 1 ≤ s1, s2의 원소의 길이 ≤ 10 s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다 s1과 s2는 각각 중복된 원소를 갖지 않습니다. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"] 0 2.해결 function solution(s1, s2) { const totalArray = [...s1, ...s2]; return totalArray.filter((v,..
2023.05.04 -
[JS] 삼각형의 완성조건(1)
1. 문제설명 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요. 제한 조건 sides의 원소는 자연수입니다. sides의 길이는 3입니다. 1 ≤ sides의 원소 ≤ 1,000 입출력 예 sides result [1, 2, 3] 2 [3, 6, 2] 2 [199, 72, 222] 1 2.해결 function solution(sides) { const result = sides.sort((a, b) => b - a); retu..
2023.05.03 -
[JS] 짝수 홀수 개수
1. 문제설명 정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요. 제한 조건 1 ≤ num_list의 길이 ≤ 100 0 ≤ num_list의 원소 ≤ 1,000 입출력 예 my_string result [1, 2, 3, 4, 5] [2,3] [1,3,5,7] [0,4] 2.해결 let result = [ num_list.filter((i) => i % 2 === 0).length, num_list.filter((i) => i % 2 != 0).length ]; return result; 배열의 각 요소가 홀수인지 짝수인지 판별을 하려면 배열의 요소에 접근해야했다. 그래서 filter를 선..
2023.05.02 -
[JS] 양꼬치
1. 문제설명 머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요. 제한 조건 0 < n < 1,000 n / 10 ≤ k < 1,000 서비스로 받은 음료수는 모두 마십니다. 입출력 예 n k result 10 3 124,000 64 6 768,000 2.해결 function solution(n, k) { const sheep = 12000 * n; const drink = 2000 * (n / k - parseInt(n / 10)); let defaultPri..
2023.05.02