알고리즘 21

[leetcode] Best Time to Buy and Sell Stock

[문제] https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/ LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 배열에 가격이 주어진다. 가격[i]은 그 날 주어진 주식의 가격이다. 하루만 주식을 사고 다른 한 날을 선택해서 주식을 판매하여 수익을 극대화 해야한다. 이 거래를 통해 ..

알고리즘 2023.09.30

[leetcode] ContainsDuplicate

[문제] https://leetcode.com/problems/contains-duplicate/description/ 주어진 정수 배열 nums 에서 값이 배열에서 두 번 이상 나타나면 true 를 반환, 그렇지 않다면 false 를 반환 [풀이 과정] 배열에서 중복된 값이 있는지 없는지 확인할 수 있는 Set 을 사용하였다. 배열을 set 에 저장한 후 set 의 길이와 배열의 길이를 비교하였다. set 의 size 와 nums 의 길이가 같다면 중복된 요소가 없다는 의미로 false 반환 set 의 size 와 nums 의 길이가 다르다면 중복된 요소로 인해 set 의 size 가 줄었다는 의미니까 true 를 반환했다. [풀이 코드] import java.util.HashSet; import ja..

알고리즘 2023.09.29

[백준] 2309 _ 일곱난쟁이

package solved_ac.Bronze; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class B_2309_2 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[9]; int sum = 0; // 난쟁이들의 키의 총합 int total = 0; // 키의 총합에서 두명 뺀 수 int not1 = 0; // 가짜 난쟁이 1 int not2 = 0; /..

알고리즘 2023.09.19

[백준] 11726 _ 2XN 타일링

이 문제는 경우의 수가 생각이 부분 부분 생각이 나지 않아서 꽤 많이 고민한 문제이다. 타일을 하나하나 그리면서 보면서 풀어보았다. 생각이 안났던 경우의 수는 가로로 눕힌 타일이 2개이상 존재한다는 것을 늦게 깨달았다. 그래서 4개이상의 타일로 계산을 할 때 2개씩 눕히면서 경우의 수를 고려해야 했다. 다음과 같이 그림으로 표현하다 보면 규칙이 발생한다는 것을 알 수 있다. 3개이상의 타일을 사용할 때 부터 규칙이 바로 앞 순서의 개수와 앞 앞 순서의 개수를 더하면 현재 타일로 계산할 수 있는 경우의 수를 구할 수 있다는 규칙이 보인다. 1 + 2 = 3 2 + 3 = 5 3 + 5 = 8 5 + 8 = 13 ... 이런 규칙이 보인다. 그래서 현재의 경우의 수를 이 전과 전전 경우의 수를 더해서 나올 ..

알고리즘 2023.09.13

백준 - 2579 - 계단 오르기

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 동적 계획법 문제이다. 현재 인덱스 i에 대해 두 칸 전(i-2) 의 '메모이제이션 값' 과 첫 칸 전(i-1)의 값 + 세번째 칸 전 (i-3)의 '메모이제이션 값' 중 큰 값을 현재 i 계단의 값과 합하여 DP 배열에 저장해주면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; pub..

알고리즘 2023.03.30