728x90
121. Best Time to Buy and Sell Stock
문제를 이해한 바로는, 순차적으로 읽어가며 가장 작은 값이 나온 경우 최소값을 대체하고, 최소값과 현재 시장가의 차로 수익을 계산 한다. 그리고 가장 그 차이가 큰 경우의 값을 리턴해준다.
class Solution {
public int maxProfit(int[] prices) {
int answer =0;
int min = Integer.MAX_VALUE;
for(int i=0; i<prices.length; i++){
if(prices[i]<min){
min=prices[i];
}else{
int m = prices[i]-min;
if(m>answer){
answer = m;
}
}
}
return answer;
}
}
문제 풀이
- 최소값을 구하기 위해 Integer.MAX_VALUE; 를 값으로 할당해준다.
- 반복문을 돌며 최소값을 찾아주고, 더 작은 값이 있을 때 최소값은 대체된다.
- 만약 prices[i]값이 min보다 크면 그 차이를 계산해준다 (int m)
- 현재 시세 차익이 이전 차익보다 더 크면 (m>answer) answer는 그 차이값으로 대체된다
409. Longest Palindrome
해당 input의 값으로 앞으로 읽어도, 뒤로 읽어도 같은 문자를 만들 때 그 길이를 묻는 문제다.
ex) 수박이박수 ? 같은 느낌이랄까
class Solution {
public int longestPalindrome(String s) {
int odd=0;
Map<Character,Integer> map = new HashMap<>();
for(char ch : s.toCharArray()){
map.put(ch,map.getOrDefault(ch,0)+1);
if(map.get(ch) % 2 == 1){
odd++;
}else{
odd--;
}
}
if(odd>1){
return s.length()-odd+1;
}
return s.length();
}
}
'알고리즘' 카테고리의 다른 글
정렬(Sort) 알고리즘 for Java (1) | 2024.01.21 |
---|---|
알고리즘 BigO 간단 정리 (1) | 2024.01.07 |
[Day4/75] LeetCode 75 (0) | 2023.04.21 |
[Day3/75] LeetCode 75 (0) | 2023.04.20 |
[Day2/75] LeetCode 75 (0) | 2023.04.19 |