[leetcode] 70. Climbing Stairs (동적 계획법, 피보나치, 수) - 작심큰일 챌린지 Day6
·
Algorithm
https://leetcode.com/problems/climbing-stairs/description/ 작심큰일 챌린지 6일차 leetCode 70. Climbing Stairs 문제를 풀었다.n개의 계단을 올라갈 때 한 번에 1칸 또는 2칸을 올라갈 수 있고이 때 n번째 계단에 도달하는 서로 다른 방법의 수를 구하는 문제이다. 이전에 백준에서 비슷한 문제를 풀었어서 어렵지 않게 풀 수 있었다. [문제 푼 코드1]처음 풀었을 때는 배열을 구현해서 동적 계획법으로 풀었다.1개의 계단과 2개의 계단에 대한 초기값을 설정하고dp[n] = dp[n-1] + dp[n-2]의 점화식을 세웠다.public class ClimbingStairs { public int climbStairs(int n) { ..
[백준] 16401번 과자 나눠주기(이분 탐색) - 작심큰일 챌린지 보너스
·
Algorithm
https://www.acmicpc.net/problem/16401 오늘은 백준 16401번 과자 나눠주기 문제를 풀어보았다.작심큰일 챌린지의 보너스 문제로 미들러 레벨의 문제이다. 문제는 M명의 조카한테 N개의 과자를 가지고 동일한 크기로 나눠줘야 하는데 그 중에서 가장 긴 길이로 줄 수 있는 과자의 길이를 구하는 문제이다.(동일한 길이를 주지 않으면 조카들끼리 싸운다고 한다..) 예제를 살펴보면 아래와 같다.입력3 101 2 3 4 5 6 7 8 9 10출력8 왜 이렇게 나올 수 있냐면 조카 3명이 있고 과자는 10개가 있다(길이는 1 ~ 10)길이 7로 자르면1 ~ 6 -> 다 0개(길이가 짧아서 자를 수 없음)7 -> 1개8 -> 1개(7+1)9 -> 1개(7+2)10 ->1개(7+3)총 4개의 ..
[백준] 1181번 단어 정렬(문자열, 정렬) - 작심큰일 챌린지 Day5
·
Algorithm
https://www.acmicpc.net/problem/1181 오늘은 백준 1181번 단어 정렬 문제를 풀어보았다. 길이가 짧은 것부터 출력하고 길이가 같으면 사전 순으로 정렬해야 하는데중복 단어는 제거하여 한 번만 출력해야하는 문제이다. [문제 푼 코드]중복을 제거하기 위해서 Set으로 먼저 입력값을 받고 set에 저장된 String 값을 list에 저장했다.나는 Word라는 클래스를 만들어서 List로 선언하고Word 클래스는 size와 value 필드명을 선언, compareTo 메서드를 오버라이딩 하였다.compareTo 메서드 안에서 길이가 같은 경우 사전순으로 정렬하도록 value.compareTo(value)를 하였고길이가 같지 않은 경우에는 size를 비교하여 더 짧은 순으로 정렬되도..
[leetcode] 706 Design HashMap - 작심큰일 챌린지 Day4
·
Algorithm
https://leetcode.com/problems/design-hashmap/ 오늘의 문제는 해시맵을 직접 구현하는 문제다. 나는 단순히 고정 배열을 선언하고 -1로 채운 뒤 간단하게 구현을 하였다.나의 코드는 모두 O(1) 시간에 동작한다.실제 해시 구현이라고 보기는 어렵지만 문제에서 제시한 조건은 충족하면서 빠르게 통과할 수 있다.[문제 푼 코드]import java.util.Arrays;class MyHashMap { private int[] arr; public MyHashMap() { arr = new int[1000001]; Arrays.fill(arr, -1); } public void put(int key, int value) { ..
[leetcode] 232 Implement Queue using Stacks - 작심큰일 챌린지 Day3
·
Algorithm
8월 4일부터 스파르타 코딩 클럽에서 진행하는 작심큰일 챌린지를 하고 있다.기본을 다지자라는 마음으로 비기너 레벨로 진행하고 있는데 오늘은 처음보는 사이트에서 문제를 풀었고 내가 생각한 부분과 시니어 개발자의 해설이 다른 부분이 있어 블로그에 기록을 남기게 되었다. https://leetcode.com/problems/implement-queue-using-stacks/description/ 2개의 스택을 사용해 큐를 구현하는 문제였다.자료구조를 직접 구현해 본 적이 없다고 생각해서 처음에는 조금 막막했는데스택은 LIFO, 큐는 FIFO 구조를 가지고 있다는 것을 생각하고 하나씩 구현하기 시작했더니 막히지 않고 풀 수 있었다 [문제 푼 코드]public class Solution { public s..
[백준] 10815번 숫자 카드(자료구조, 정렬, 이분탐색, 집합과 맵)
·
Algorithm
https://www.acmicpc.net/problem/10815 백준 10815번 문제를 풀어보았다. '그림으로 개념을 이해하는 알고리즘' 책을 읽으면서 배운 알고리즘 개념을 적용해보고 싶어서 첫장에서 배운 이진 탐색을 적용할 문제를 찾아보니 해당 문제를 추천받아서 풀게 되었다. 문제 푼 코드1맨 처음에 이진 탐색고려 안했던 코드는 시간 초과가 떳다.순서 보장에만 신경쓰기 위해서 LinkedHashMap을 사용했다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.LinkedHashMap;import java.util..