no image
[Day 10] TIL
오늘 Day 10을 끝으로 평일동안 필수로 풀어야하는 문제들을 모두 완료했다.스파르타에서 제공하는 맞춤형 보너스 문제가 있는데, 그 문제들은 주말에 공개되기 때문에 공식적인 마지막 날은 17일이다.비록 2주라는 짧은 기간이었지만, 매일 문제를 풀고 TIL을 작성하는 습관을 들일 수 있어서 좋았다!또, 시니어개발자의 코드와 해설을 통해 문제 접근 방식과 사고 과정을 조금이나마 배울 수 있었던 시간이라 알차게 보낸 것 같다.😊 오늘은 백준의 실버 문제가 나왔는데, 어느 정도 풀다가 헤매는 부분이 있어 다른 사람들의 코드를 참고하여 풀었다. [백준: 29723번] 브실이의 입시전략public class BOJ_29723 { public static void main(String[] args) thr..
2025.08.15
[Day 9] TIL
[Leetcode: 349] Intersection of Two Arraysclass Solution { public int[] intersection(int[] nums1, int[] nums2) { Set set1 = new HashSet(); Set set2 = new HashSet(); int idx = 0; for(int num : nums1) { set1.add(num); } for(int num : nums2) { if(set1.contains(num)) { set2.add(num); } } int[] ..
2025.08.15
[Day 8] TIL
이번 문제는 혼자 풀어보려다가 막힌 부분이 생겨 검색하던 중 너무 비효율적이게 코드를 작성한 것을 깨달아버렸다😓해시맵으로 풀면 될 줄 알았는데, 다른 사람들의 코드를 보니 너무나도 간단했다.[Leetcode: 2283] Check if Number Has Equal Digit Count and Digit Value👨🏻‍💻 시니어 개발자의 코드public class Solution { public boolean digitCount(String num) { int[] count = new int[10]; for (char c : num.toCharArray()) { int digit = c - '0'; count[digit]++; ..
2025.08.14
[Day 7] TIL
오늘은 백준의 실버 문제가 나왔다.두 점을 지나는 직선의 개수를 구하는 문제인데 이해하는데 조금 시간이 걸렸다.AI 챗봇의 도움을 받아 sudo code를 참고삼아 코드를 구현하려고 했는데, 머리에 안 들어와서 전체 코드를 참고했다. 요즘 뇌가 조금 굳었는지 머리 회전이 전만큼 안되어서 코드 분석을 중심으로 머리를 회전시켜봐야겠다![백준: 2358번] 평행선🐥 제출한 코드public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = I..
2025.08.12
동적 계획법(Dynamic Programming, DP)
* 피보나치 예시를 가지고 작성동적 계획법 (Dynamic Programming, DP)큰 문제를 작은 문제로 나눠서, 중복 계산을 피하고 푸는 방법핵심: 이미 구한 값은 저장해서 재활용 DP(Memoization) ➡️ Top-down 방식보통 재귀 함수로 구현계산한 결과를 메모(저장)해두는 방법다음에 같은 입력이 들어오면 계산하지 않고 저장된 값을 반환구현 시 주로 재귀 + 배열(또는 Map)호출 흐름어떤 문제를 풀려고 함이미 풀었던 문제면 저장된 값 사용아니면 재귀 호출로 하위 문제를 계산 -> 결과 저장int[] memo = new int[100];int fib(int n) { if (n DP(Tabulation) ➡️ Bottom-up 방식작은 문제부터 차례대로 계산해서 큰 문제로 ..
2025.08.12
[Day 6] TIL
이번 문제는 leetcode의 easy 난이도인 문제가 나왔다. 피보나치 수열을 이용한 문제라고 생각했고, 실행 시 테스트코드도 성공적으로 돌아갔다. 제출 후 확인해보니 단순히 피보나치 수열을 이용하는 문제는 아니고, DP를 적용해서 불필요한 중복 계산을 줄이고 공간 최적화까지 해보는 문제였다..![Leetcode: 70] Climbing Stairs🐥 제출한 코드class Solution { public int climbStairs(int n) { if (n == 0 || n == 1) { return 1; } return climbStairs(n-1) + climbStairs(n-2); }} 👨🏻‍💻 시니어 개발자 코드publ..
2025.08.12
[Day 5] TIL
오늘은 백준의 실버 문제가 나왔다. 조건은 총 3개이다.1. 길이가 짧은 것부터2. 길이가 같으면 사전 순3. 중복 단어 제외 '1. 길이가 짧은 것부터' 라는 조건에서 막혔고, 고민하던 중 선택정렬로 풀어볼까 했지만 시간복잡도를 고려하면 비효율적이라는 생각이 들었다.찾아보던 중 Comparator 인터페이스를 람다식으로 구현하여 List로 정렬하는 방법이 있어 참고해봤다.[백준: 1181번] 단어 정렬🐥 제출한 코드public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..
2025.08.08
[Day 4] TIL
오늘도 leetcode의 문제가 나왔다.Day3 문제와 비슷한 유형의 문제여서 조금 덜 어려웠다!내장 라이브러리를 사용하지 않고, 기본적인 해시맵을 직접 구현하는 문제이다.한창 풀고서 '오늘은 풀만한데?' 라고 생각하며 제출을 했고, 통과가 되어서 '작심큰일'에 그대로 제출했다.그런데 해설을 확인한 뒤 아차싶었다..ㅎ내장 라이브러리를 사용해버린 것이다😭스파르타에서 제공해주는 시니어 개발자분의 해설을 볼 수 있어서 다행이다...이 해설로 다시 공부해야겠다😓 [Leetcode: 706] Design HashMap 👨🏻‍💻 시니어 개발자의 코드class MyHashMap { private static final int SIZE = 10000; private Node[] buckets; ..
2025.08.07
[Day 3] TIL
오늘은 leetcode의 문제가 주어졌다.leetcode는 처음 접해봐서 적응하기까지 시간이 다소 소요됐다.leetcode는 입력과 출력 코드를 따로 작성하지 않아도 되는 장점이 있다.스택을 큐처럼 구현하는 문제였는데 전혀 감이 잡히지 않을 정도로 어려웠다...이번에도 역시나 다른 사람들의 코드를 보고 풀었다.🥲[leetcode: easy 232] Implement Queue using Stacks 🐥 제출한 코드class MyQueue { Stack input = new Stack(); Stack output = new Stack(); public void push(int x) { input.push(x); } public int pop() { s..
2025.08.06