algorithm 8

[DP (Dynamic Programming)] 백준 11726 - 2xN 타일링

다이나믹 프로그래밍은 한 문제를 풀 때 반복적으로 계산되는 불필요한 과정을 방지하기 위해 한문제당 한번만 계산하여 문제를 푸는 방식을 말한다. 방식은 "메모이제이션"이라는 값을 저장하는 방법을 사용하는데, 다이나믹 프로그래밍의 대표적인 예는 '피보나치 수열'이 있다.public class DynamicProgramming { public static int dp(int x){ if(x == 1) return 1; if(x == 2) return 1; return dp(x-1) + dp(x-2); } public static void main(String[] args) { System.out.println(dp(10)); }}10을 넣..

algorithm 2024.09.03

[Programmers] [코딩테스트 입문] 배열의 유사도, 제곱수 구하기, 모음 제거

배열의 유사도 (120903)class Solution { public int solution(String[] s1, String[] s2) { int answer = 0; for(int i =0; i 초기 코드는 문자열인데 if( s1[i] == s2[j] ) 와 같이 적어서 통과하지 못했다   제곱수 구하기 (120909)class Solution { public int solution(int n) { int answer = 0; for(int i =0; i   모음 제거 (120849)public class Main { public static void main(String[] args) { String answer = ..

algorithm 2024.09.03

[Programmers] [코딩테스트 입문] 최댓값 만들기, 삼각형의 완성조건, 문자열 안에 문자열

최댓값 만들기(1) (120847)class Solution { public int solution(int[] numbers) { int answer = 0; for (int i = 0; i 나는 위 사진과 같은 방법으로 이중 for문을 사용하여 i * j 값이 가장 큰 값을 answer 변수에 저장하는 방식으로 풀이했다.그렇게 되면 모든 수가 한번씩 곱해질 수 있다.   삼각형의 완성조건(1) (120889)// sides 배열 오름차순으로 정렬// sides.length - 1번째를 가장 큰 값으로 지정// 나머지 값들은 sum+= 을 이용하여 더해준다.// 그렇다면 배열의 순서와 값의 크기 상관없이 문제를 풀 수 있다.import java.util.*;class Sol..

algorithm 2024.09.03

[Programmers] [코딩테스트 입문] 두 수의 나눗셈, 특정 문자 제거하기

두 수의 나눗셈 (120806)class Solution { public int solution(int num1, int num2) { int answer = (int) ((double)num1/num2 * 1000); return answer; }}자료형 중 실수에 대하여 기본적인 지식이 있어야 풀 수 있었던 문제이다.괄호 위치도 중요했던 문제인데, 처음엔 (double)num1/num2*1000 와 같이 작성해서 답으로 1000이 계속 나왔다. 다시 짚어보는 float과 double의 차이점float - 4byte (32bit)double - 8byte(64bit) double이 좀 더 큰 숫자를 표현할 수 있다.    특정문자 제거하기 (120826)class S..

algorithm 2024.09.03

(230619) Queue

Queue- 자료가 일렬로 놓인 선형 자료구조- 제일 먼저 추가된 자료가 먼저 나오는 선입선출 자료구조 (FIFO, First In First Out)public class MyQueue { private final int[] arr = new int[4]; // Queue에서 데이터 꺼내는 위치 private int front = -1; // Queue에 데이터를 추가하는 위치 private int rear = -1; public MyQueue() {} // 데이터 추가 public void enQueue(int x){ // rear + 1이 배열의 크기만해질 때 if(rear == arr.length-1){ thr..

algorithm 2024.09.03

(230518) 알고리즘 - 괄호풀기 / DB

1. 알고리즘1-1. 괄호풀기1-1-1. 괄호 풀기 설명()() – 짝이 맞음 true(())() – 짝이 맞음 true)()( – 짝이 안맞음 false(()( – 짝이 안맞음 false괄호가 맞는 경우라면 반드시 여는 괄호 다음에 닫는 괄호가 나온다.  1-1-2. 괄호 풀기 ( Stack 이용 x )public class BracketWithoutStack { public static void main(String[] args) { String brackets = "((((()))))"; while(brackets.indexOf("()") != -1){ brackets = brackets.replace("()", ""); } ..

algorithm 2024.07.25

(230517) 알고리즘 - Stack(스택) / DB

1. 알고리즘1-1. Stack(스택)1-1-1. 합성함수 f o g()1-1-2. 실제 호출 예제 1-2. Stack의 구현1-2-1. 스택 기능1-2-2. push() 구현1-2-3. pop() 구현1-2-4. isEmpty() 구현1-2-5. isEmpty() ture일 때 pop 처리1-2-6. peek() 구현 2. MySQL2-1. DB2-1-1. 스키마 생성2-1-2. Table 생성2-1-2. Drop Table    1. 알고리즘1-1. Stack ( 스택 )- 스택 (Stack) : 휴지와 감자칩, 나중에 들어온 것이 먼저 빠지는 자료구조 (Last In First Out)- 큐 (Queue) : 대기 줄 , 먼저 온 것이 먼저 빠지는 자료구조 (First In First Out) JV..

algorithm 2024.07.25

(230516) 알고리즘 - 삽입 정렬

1. 알고리즘1-1. 삽입정렬1-1-1. 핵심로직1-1-2. swap & 배열 출력1-1-3. 튜닝 & 리팩토링1-1-4. OOP + 내림차순 (오버로딩) 1-2. 선택정렬1-2-1. 핵심로직1-2-2. for문 적용1. 삽입정렬i가 어디에 들어가야할 지 정하는 모양이 위치를 찾아 넣는 것 같다고 하여 삽입정렬이라는 이름이 붙었다.i는 0부터 시작하는 것이 아니라 1부터 시작 1-1. 핵심로직i가 1일 때 1과 0을 비교 ==> i - 0, i - 1i가 2일 때 2와 1을 비교 ==> i - 0, i - 1                                     ==> i - 1, i - 2i가 4일 때 3과 2를 비교 ==> i - 0, i - 1                         ..

algorithm 2024.07.25