알고리즘 11

약수 구하기

약수를 구하는 알고리즘에는 몇 가지 방법중 가장 일반적이고 효율적인 방법기본적인 방법:1부터 해당 숫자까지 모든 수로 나누어 보는 방법입니다.시간 복잡도: O(n)제곱근을 이용한 최적화 방법:숫자의 제곱근까지만 검사하는 방법입니다.시간 복잡도: O(√n)제곱근을 이용한 최적화 방법의 알고리즘은 다음과 같습니다:주어진 수 n의 제곱근까지 반복합니다.i가 n의 약수라면, i와 n/i 모두 약수입니다.i와 n/i가 같지 않은 경우에만 두 수를 모두 약수 목록에 추가합니다.예를들어 36의 약수를 구하면 const res=[1]; const divisor=n=>{ let i=2; for(i; ia-b));n = 36Math.sqrt(36) = 6, 따라서 i는 1부터 6까지 반복합니..

알고리즘 2024.09.12

재귀함수 -> 꼬리물기 재귀함수 -> 반복문

재귀함수를 꼬리 재귀 함수로 변환하고, 그 다음 반복문으로 변환하는 것은 재귀 호출을 명시적인 반복 구조로 바꾸는 과정입니다. 꼬리 재귀는 함수의 마지막 작업이 자기 자신을 호출하는 형태로, 이론적으로는 반복문으로 쉽게 변환할 수 있습니다.꼬리 재귀를 반복문으로 바꾸는 이유는 스택오버플로우 때문입니다.그렇게 때문에 꼬리재귀함수 와 반복문간의 코드 변환은 자유자재로 할수 있어야 합니다.재귀함수 문제 중에서 다른 문제로는 다음과 같은 것들이 있습니다.https://www.youtube.com/watch?v=h80tLv0fn88&list=PLBNdLLaRx_rKOFzA3txlG5rf9ZaVUuvmv&index=210분정도 후 부터 tail recursion 보시면 됩니다. 1. 피보나치 수열피보나치 수열은 각..

알고리즘 2024.08.20

JAVA Trie(트라이) 연습문제

Trie(트라이)를 이용한 문자열 검색 아래 문자열 저장한뒤 to tea app 검색할 문자열로 검색 (to) JAVA Trie(트라이) 연습문제 import java.util.*; public class Main { public static void main(String[] args) { Trie head = new Trie(); head.insert("to"); head.insert("tea"); head.insert("tonight"); if(head.prefixSearch("to")) { System.out.println("ooo"); } else { System.out.println("xxx"); } } } class Trie { private TrieNode root; public Trie()..

알고리즘 2020.09.24

[알고리즘] 완주하지 못한 선수

출처 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작..

알고리즘 2020.09.16

[알고리즘] 배열에서 두개의 숫자 뽑아서 더하기

https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한� programmers.co.kr 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는..

알고리즘 2020.09.16

[알고리즘] 약수의 합을 구하시오

https://programmers.co.kr/learn/courses/30/lessons/12928 코딩테스트 연습 - 약수의 합 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수 programmers.co.kr 문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 nreturn 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28..

알고리즘 2020.09.16

[알고리즘] 두 정수사이의 합

https://programmers.co.kr/learn/courses/30/lessons/12912 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 ..

알고리즘 2020.09.16

[알고리즘] 문자열 다루기 기본

문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 입출력 예 sreturn a234 false 1234 true 핵심알고리즘 정규식을 이용하여 깔끔하게 처리 ^[0-9]+$ ^ 문자열 시작 [0-9] 0에서 9까지 숫자 인정 + 앞에 문자가 최소 한개 이상 있음 $ 문자열 종료 위 정규식을 해석하면 0-9로 시작하고 한개이상이면서 0-9로 끝나는 문자 결과 public class Main { public static void main(String[] args) { String test ..

알고리즘 2020.09.16

[알고리즘] 가운데 글자 가져오기

https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 sreturn abcde c qwer we 핵심알고리즘 입력받은 문자를 배열로 변환하여 나누기 2를 하면 가운데..

알고리즘 2020.09.16

[알고리즘] 평균 구하기

https://programmers.co.kr/learn/courses/30/lessons/12944 코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr 문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 [1,2,3,4] 2.5 [5,5] 5 기본코드 clas..

알고리즘 2020.09.16