본문 바로가기

Algorithm65

[LeetCode] 3201번 Find the Maximum Length of Valid Subsequence I 자바 문제 https://leetcode.com/problems/find-the-maximum-length-of-valid-subsequence-i/description/?envType=daily-question&envId=2025-07-16 문제 풀이 나누기 2를 한다는 점에 주목해보면, 수는 무조건 짝수 또는 홀수 이기 때문에 2를 나눴을 때 나머지는 무조건 0이나 1이 나온다.홀수 + 홀수 → 0 짝수 + 짝수 → 0짝수 + 홀수 → 1 리턴해야 하는 값인, 문자열 중에 두 수를 더해서 나눴을때 같은 최대 부분 문자열 수는 1. 짝수 개수 또는 홀수 개수 중 큰 수로 일괄적으로 카운팅 ex) {2, 2, 2, 2, 2, 2, 3} 인 경우 그냥 짝수 개수만큼 최대 부분문자열이 됨 2. 짝수 + 홀수 조합.. 2025. 7. 21.
[백준] 2179번 비슷한 단어 자바 문제 (구현) https://www.acmicpc.net/problem/2179 문제 풀이 처음에는 문제 내용에 있는 '부분 문자열'이 LCS를 말하는 줄 알고 부분 문자열 구하는 함수를 작성하면서 메모리 초과, 시간 초과를 다 맞이했는데 구글링해서보니까 그냥 앞에서 동일한 개수만 카운팅해주면 되는 듯 하다.카운팅 함수만 그렇게 바꿔줬더니 바로 성공 떴다. ✅ 알고리즘1. 출력할 단어 두 개를 변수로 선언해두고, 순서대로 단어를 비교해나간다.2. 부분문자열 개수가 기존 가지고 있던 개수보다 클 때만 출력 단어 변수를 업데이트 한다. ⁉️ 만약 모든 단어들이 겹치는 것이 없다면, 맨 앞에 입력된 두 개의 단어를 출력해야 할 것 같아서 마지막에 max == 0 이면 맨앞 단어를 출력했는데 해당 분기문이 .. 2025. 7. 13.
[백준] 22860번 폴더 정리 (small) 자바 문제 (HashMap) https://www.acmicpc.net/problem/22860 문제 풀이 문제를 꼼꼼하게 읽지 않아서 많이 애먹었다.'main 하위 디렉토리에 같은 이름의 폴더가 두 개 이상 존재할 수 없다' ← 이 조건이 main바로 하위 폴더에만 적용되는 조건인 줄 알았는데 그게 아니라 전체 하위에 같은 이름의 폴더가 없다는 뜻이었나 보다.그 말인 즉슨, '중복된 이름의 폴더는 없다' 라고 해석할 수 있는 것...^^ - main이 최상위 폴더로 고정되어 있음- 중복된 폴더는 없음- 폴더 및 파일 관계에 대한 input값은 순서 없이 랜덤하게 주어짐 이 조건만 잘 이해하고 풀었어도 시간이 이렇게 많이 걸리지는 않았을 텐데... ✅ 알고리즘1. 각 폴더 별로 하위에 있는 폴더 및 파일을 .. 2025. 7. 13.
[백준] 1012번 유기농 배추 문제 (DFS) https://www.acmicpc.net/problem/1012 문제 풀이 알고리즘 오랜만에 푸는 거라 실버2 만만한 DFS 골라서 풀었는데 사소한 조건들 다 잘못해서 푸는 데 한참 걸렸다. 내가 실수한 부분: (ㅠㅠ) 1. M = 가로길이 / N = 세로길이 → 보통 문제 풀 때 무조건 순서대로 행/열 이라고 생각해서 풀어서 실수 2. DFS 조건 돌릴 때 변수 > 0 표시할 때 >= 이꼴도 들어갔어야 했는데 =안하고 계속 어디서 실수지 Print로 한참 쳐보다가 발견함.. 간단한 문제풀이 설명:반복 돌리면서 양배추 구간을 만나면 DFS로 최대 양배추 구간을 구해 Vist 표시 후에 뭉텅이 개수 구해서 return. 소스 코드 import java.io.BufferedReade.. 2025. 7. 6.
[LeetCode] Unique Length-3 Palindromic Subsequences 자바 문제 https://leetcode.com/problems/unique-length-3-palindromic-subsequences/description/?envType=daily-question&envId=2025-01-04 ▫️  s 문자열이 주어질 때 3글자의 Palindrome을 만족하는 개수 리턴▫️ 단, 글자 순서 변경 X, 중복 X  문제 풀이 팰린드롬 문자의 개수가 '3개'로 정해져 있기 때문에 쉽게 구현이 가능하다.양끝쪽 글자에 대해서 가운데 오는 숫자만 중복없이 구하면 된다. ✅ 알고리즘1. 처음 인덱스와 끝 인덱스를 가르키는 start, end 변수를 선언하여 양끝쪽 문자가 같을 때까지 end-- 하며 반복문을 실행한다.2. start, end가 가리키는 문자가 동일한 경우 그 사이의.. 2025. 1. 12.
[LeetCode] Evaluate Division 자바 문제 https://leetcode.com/problems/evaluate-division/description/ ▫️equations[i] = [Ai, Bi]▫️ values[i] = Ai / Bi▫️ queries의 각 변수 쌍은 나눈 값들을 리턴하라       구할 수 없다면 -1.0 리턴하라  문제 풀이 처음 보고 든 생각은 주어진 분자 분모의 조합으로 나올 수 있는 모든 값들을 저장해두고 queries 반복하면서 도출해내고 저장해둔 값이 없으면 -1로 해야겠다고 생각했다. 그런데 주어진 equations과 values로 모든 경우의 조합을 구하는 코드를 작성하기가 어려워서 결국 다른 사람의 코드를 보고 공부했다.. 구현 아이디어가 어마어마하다..아이디어는 같지만 구현하기가 어려웠다. (대단한 사.. 2024. 11. 18.