728x90
★★★★★★★★★★★ 이진탐색은 정렬되지않은 임의의 숫자에서 절대 찾을수 없음... 중요!!!
해결법 : 정렬해도 된다면 정렬함... 하지만 정렬해서 원본값이 회손된다면 그냥 O(N)에 탐색으로 값을 찾자..!!
1. 팩토리얼
5 4 3 2 1 이런식으로 쭉쭉 곱해줘야하니 스택에 쌓아놨다가 한번에 연산을 해줘야 하기 때문에
n * factorial(n-1);
이런 연산을 해줘야 합니다. 풀이를 해주면 n * n-1 * factorial(n-2) ......
public class Main {
static int result =0;
public static int factorial(int n)
{
if(n<=1)
{
return 1;
}
else
{
result = n * factorial(n-1);
}
return result;
}
public static void main(String[] args)
{
System.out.println(factorial(5));
}
}
끝나는 조건 : n이 1이될때
2. 이즈 팰린드롬(회문검사) - 재귀사용
public class Main {
static int result =0;
public static boolean is_palindrome(String name)
{
if(name.length()==1)
{
return true;
}
if(name.charAt(0) != name.charAt(name.length()-1))
{
return false;
}
name = name.substring(1,name.length()-1);
is_palindrome(name);
return true;
}
public static void main(String[] args)
{
// String input = "소주만병만주소";
String input = "tomato";
System.out.println(is_palindrome(input));
}
}
알고리즘 : 첫글자 끝글자를 점점 비교하면서 없애면서 확인한다.
끝나는 조건 : 첫글자와 끝글자가 다르거나, 입력받은 글자의 길이가 1일때 종료한다.
n의 배수 찾기
import static java.util.Arrays.sort;
import java.util.ArrayList;
import java.util.List;
class Solution
{
public static int[] solution(int n, int[] numlist)
{
int[] answer = {};
int cnt=0;
List<Integer> calcul = new ArrayList<Integer>();
for(int i=0;i<numlist.length;i++)
{
if(numlist[i]%n==0)
{
calcul.add(numlist[i]);
cnt++;
}
}
answer = calcul.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
생각 흐름 : 처음에는 while과 for문을 돌려서 무식하게 n^2만큼의 시간복잡도가 나오게 막짰는데 시간 초과가 나서... 나중에 다른방법을 생각해보니 %연산자가 생각나서 적용시켰더니 통과 했다.
728x90
'스파르타코딩클럽(내일배움캠프)' 카테고리의 다른 글
스파르타코딩클럽 내일배움캠프 6주차3일 (0) | 2022.12.07 |
---|---|
스파르타코딩클럽 내일배움캠프 6주차 2일 (0) | 2022.12.06 |
스파르타 코딩 클럽 내일배움캠프 5주차 후기(WIL) (0) | 2022.12.04 |
스파르타 코딩 클럽 내일배움캠프 5주 5일 (0) | 2022.12.02 |
스파르타 코딩 클럽 내일배움캠프 5주차 4일 (0) | 2022.12.01 |