Think 나 왜 이렇게 재귀만 나오면 머리가 멈출까?...... 책 풀이만으로는 이해가 안되어서 영상 찾아봤다 https://www.youtube.com/watch?v=0snEunUacZY 코드에서 len(path)와 len(digits)의 값이 같을 때 깊이 탐색을 멈추고 백트래킹을 한다는 말이 이해가 안 갔는데 이번에도~ 영상 속 그림을 보고 한방에 이해 됐다 digit이 두개니까 지금 탐색중인 path의 길이가 두개이면 끝까지 갔다는 얘기 -> 백트래킹! 지금까지 따라온 경로 = 문자열 하나 인 path를 결과 배열에 저장하고 return 으로 한꺼풀 빠져나온다. Solution class Solution(object): def letterCombinations(self, digits): """ ..
DSA/Algorithm
https://leetcode.com/problems/jewels-and-stones/ Jewels and Stones - LeetCode 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 Think 오늘 푼 것 중에 제일 할 만 했던 것 같다^^..! 문제도 귀여웠음 보석찾기 해시테이블에 존재하는 키 값을 찾을 때 딕셔너리 자료형의 무슨 메서드가 있는지부터 고민했는데 단순히 in 연산자로 해결..~ 파이썬에 더 익숙해지는 과정이 필요할 듯 Solution class Solutio..
https://leetcode.com/problems/design-circular-queue/ Design Circular Queue - LeetCode 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 Think 왜 시작을 못하겠지? 경험이 부족함을 느꼈다 앞부분을 참고해서 적고나니 뒷부분은 얼추 구현해볼 수 있었다 공부하자!! 그리고 파이썬은 모든 내장 변수에 self를 붙여야 하는 점이 너무 불편하고 가독성도 안 좋은 것 같다 하지만 어쩌겠어 내가 고른 길인걸~~ 사람은 적응..
https://leetcode.com/problems/implement-stack-using-queues/ Implement Stack using Queues - LeetCode 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 Think 뭘로 뭘 구현해라..라는 문제 형식 자체가 낯설어서 읽어보는 것만으로 공부였던 문제 뭘 써서 구현해야 할 지도 몰랐다 ㅋㅋㅋㅋ...~ 게다가 deque도 모르고~ 그리고 리트코드에서 적어둔 코멘트들 읽으면서 풀 것.. 문제 좀 읽어라 Soluti..
https://leetcode.com/problems/remove-duplicate-letters/ Remove Duplicate Letters - LeetCode 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 Think 재귀는 많이 연습해야 겠다.. 함수 만들어서 재귀로 푸는 거에 쫄지 말기. 스택으로 푸는 법도 다시 풀어보기. Solution 1. 재귀 class Solution(object): def removeDuplicateLetters(self, s): """ :ty..
Think 역순 연결 리스트 2번째 문제. 전에 봤던 206. 역순 연결 리스트도 완벽히 이해하지 못한 상황이라 206번을 설명해주는 영상을 찾아 보고 왔다. 이해가 훨씬 잘 됐다! 반복과 재귀 두 방법 모두.. 그림이 역시 짱이다 https://www.youtube.com/watch?v=G0_I-ZF0S38 206번 풀이했던 내용을 바탕으로 이번 문제는 스스로 풀어보자 반복이 재귀방법보다 공간복잡도도 더 낮고 시간도 짧다. 반복으로 풀어보자 . . . 절반밖에 못풀었다^^! 영상을 찾아봤다! 같은 채널에서 올린 영상이 있었고 이해가 역시 잘 됨... https://www.youtube.com/watch?v=RF_M9tX4Eag 이 문제에서는 주어진 연결리스트의 맨 앞 head노드를 가리키는 root노드..
Think 혼자 풀기 실패 풀이 설명을 읽는데 이해가 안됨 리트 코드 solution탭을 살펴봤는데 아래 그림 보고 설명 바로 이해함!! Solution 투 포인터 사용 class Solution(object): def trap(self, height): """ :type height: List[int] :rtype: int """ #빈 인풋값이 들어왔을 경우를 처리 if not height : print(0) left = 0 right = len(height) - 1 #포인터 0부터 시작 left_max, right_max = height[left], height[right] volume = 0 while left < right : #서로 만나기 전까지 실행 #왼, 오 최댓값을 현재값과 비교해 갱신 l..
백준 9372번 문제 상근이의 여행 트리구조를 활용하는 문제이다. https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 문제 풀이 비행기가 연결리스트임. 모든 비행기가 연결되어있으므로 그냥 방문해야 하는 나라 - 1 하면 됨 해답 코드 Python ## 백준 9372 상근이의 여행 트리 from sys import stdin #입력 T = int(stdin.readline()) #중첩 리스트 두 개 - 각 케이스..
백준 1269번 문제 대칭 차집합 트리 문제이다. https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 문제 풀이 파이썬에는 집합 자료형이 있고 관련 메서드들을 활용해서 너무 쉽게 풀 수 있었다. 해답 코드 Python ## 백준 1269 대칭 차집합 트리 # 집합 자료형 사용하지 않고도 풀어보기 from sys import stdin NA, NB = map(int, stdin.readline().split()) #집합 자료형 set() A =..
백준 16466번 문제 콘서트 우선순위 큐 문제이다. https://www.acmicpc.net/problem/16466 16466번: 콘서트 HCPC (Hanyang Completely Perfect Celebrity)는 한양대학교 최고의 가수에게 주어지는 칭호이다. 한양대학교는 매년 최고의 HCPC를 선발한다. HCPC가 되기란 여간 어려운 게 아니다. 매일 아침 날달걀을 까먹 www.acmicpc.net 문제 풀이 입력받은 데이터를 1 2 4 7 8 이라 하면 입력과 크기가 같은 배열인 1 2 3 4 5 를 활용한다. 1 2 4 7 8 1 2 3 4 5 두 배열의 각 원소를 순서대로 비교해나간다. 서로 값이 다를 경우 해당 순서의 자리가 빈 것! 다른 값이 없을 경우 마지막 자리보다 한 자리 뒤가 ..
백준 2959번 문제 거북이 정렬 문제 https://www.acmicpc.net/problem/2959 2959번: 거북이 첫째 줄에 거북이가 생각한 네 양의 정수 A, B, C, D가 주어진다. (0 세 번째 수 2. 두 번째 수 < 네 번째 수 여야 한다. 주어진 수로 만들 수 있는 직사각형 넓이 ..
백준 2720번 문제 세탁소 사장 동혁 greedy 알고리즘 문제 https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 문제 풀이 중고등학생 때 풀던 동적 최소 개수 문제랑 똑같다. 괜히 영어동전으로 만들어놨다고 쫄 필요 없다. 거슬러줘야 하는 값을 m에 배열로 담고 현재 m을 coin의 큰 값부터 나누어 몫은 출력할 문자열에 추가, 나머지는 원래 m에 다시 저장하기를 동전 종류 수 만큼 반복한다. 해답 코드 Python #백준 2720 세탁소 사장 동혁 greedy from sys import stdin #입력, 사용..
백준 10162번 문제 전자레인지 greedy 알고리즘 문제 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 문제 풀이 어렵지 않은 문제. 중고등학생 때 풀던 동전 최소 개수 문제랑 똑같다 출력조건에 따라 1의 자리가 0이 아니면 주어진 숫자로는 만들 수 없는 수이니 -1을 출력하고 1의 자리가 0이면 T를 큰 값부터 나누어 몫은 카운트에 저장하고 나머지는 T에 다시 저장을 반복한다. 해답 코드 Python # 백준 10162 전자레인..
백준 2231번 문제 분해합 완전탐색(브루트포스) 문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 풀이 완전 탐색 - 어떤 수의 생성자는 원래 수보다 무조건 작으므로 0부터 N-1까지 다 계산해 봄 부분 코드 설명 isum = sum(list(map(int, str(i)))) 숫자 i를 string으로 형변환한다. 파이썬의 string은 배열처럼 사용할 수 있다. 한 글자씩 나눠져서 배열이 됨 list(m..
백준 2798번 문제 블랙잭 완전탐색(브루트포스) 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 문제 풀이 완전탐색 : 가능한 모든 경우의 수를 탐색하는 방법 N개의 수 중 3개를 비복원추출하는 모든 경우의 수를 탐색한다. 탐색하여 sum 값이 M보다 작거나 같은 값들 중 가장 큰 값을 구한다. 해답 코드 Python #백준 2798 블랙잭 #입력받는 방법 한 번 정리하기 #문제똑바로 읽기..^^ :