Baby Yoshi Blinking
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 동전교환 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
문제 다음과 같이 여러 단위의 동전들이 주어져 있을 때 거스름돈을 가장 적은 수의 동전으로 교환해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 풀이 • 답안 : Python import sys input = sys.stdin.readline def DFS(L, sum): global res # CUT EDGE if L > res: return if sum > m: return if sum == m: if L < res: res = L else: for i in range(n): DFS(L+1, sum+a[i]) n = int(input()) a = list(map(int, input().split())) a.sort(reverse=True) m = int(input()) res = ..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 중복순열 구하기 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열하는 방법을 모두 출력합니다. 풀이 • 답안 : Python import sys input = sys.stdin.readline # 상태트리가 여러 가지로 뻗어있는 문제 def DFS(index): global count if index == M: for j in range(M): print(res[j], end=' ') print() count += 1 else: for i in range(1, N+1): res[index] = i DFS(index+1) N, M = map(int, input().split()) res = [0] * M c..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 바둑이 승차 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 철수는 그의 바둑이들을 데리고 시장에 가려고 한다. 그런데 그의 트럭은 C킬로그램 넘게 태울 수가 없다. 철수는 C를 넘지 않으면서 그의 바둑이들을 가장 무겁게 태우고 싶다. N마리의 바둑이와 각 바둑이의 무게 W가 주어지면, 철수가 트럭에 태울 수 있는 가장 무거운 무게를 구하는 프로그램을 작성하세요. 풀이 • 답안 : Python import sys input = sys.stdin.readline def DFS(index, sum, tsum): global result if sum+(total-tsum) C: return # C보다 작은 경우만 따짐 if index == N: # 최..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 합이 같은 부분집합 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 'YES'를 출력하고, 그렇지 않으면 'NO'를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다. 풀이 • 답안 : Python import sys input = sys.stdin.readline def DFS(index, sum): # total 절반을 넘으면 의미가 없음 (시간복잡도 단축) if sum > (total//2): return # 종료 지점 if index == N: # total..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 부분집합 구하기 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하세요. 풀이 • 답안 : Python import sys input = sys.stdin.readline def DFS(v): # 종료지점 if v == (N+1): for i in range(1, N+1): if checked[i] == 1: print(i, end='') print() else: checked[v] = 1 # 부분집합으로 사용하겠다. DFS(v+1) checked[v] = 0 # 부분집합으로 사용하지 않겠다. DFS(v+1) N = int(input()) checked = [0] * (N+1) # 방문 여부 체크 D..
[Android/Kotlin] DataBinding (데이터 바인딩)
·
📚 공부/Android
저번 포스팅에서 ViewBinding에 대해서 자세히 다뤄보았다. 프로젝트 하면서도 ViewBinding을 많이 사용해왔었는데, 최근 MVVM에 관심이 많아져 살펴보다보니 ViewBinding 보다 DataBinding을 더 많이 사용하는 것을 알게 되었다. 본격적으로 MVVM 공부를 하기 전에 DataBinding에 대해서 공부를 하고 넘어가는 것이 좋을 것 같아서 포스팅을 하게 되었다. 1. DataBinding의 장점 Android 공식 문서를 살펴보니 DataBinding의 장점을 3가지 정도 소개하고 있었다. ✏️ DataBinding의 장점 1. 많은 UI 프레임워크 호출을 삭제 → 파일을 더욱 단순화 시키고, 유지관리가 쉽다. 2. 앱 성능을 향상시킨다. 3. 메모리 누수 및 NullPoin..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 이진트리 순회 (DFS)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 아래 그림과 같은 이진트리를 전위순회와 후위순회를 연습해보세요. 1) 전위순회 출력 : 1 2 4 5 3 6 7 2) 중위순회 출력 : 4 2 5 1 6 3 7 3) 후위순회 출력 : 4 5 2 6 7 3 1 cf.) 전위 / 중위 / 후위 가 결정되는 기준 : Root 노드에 방문을 하는 시점 (제일 먼저 / 중간에 / 나중에) 풀이 • 내 풀이 - 전위순회 import sys input = sys.stdin.readline def DFS(num): if num > 7: return else: print(num, end=" ") DFS(num*2) DFS(num*2+1) DFS(1) • 내 풀이 - 중위순회 import sys i..
[파이썬 알고리즘 문제풀이 입문] 완전탐색 (백트랙킹, 상태트리와 CUT EDGE) / DFS(깊이우선탐색) 기초 - 재귀함수를 이용한 이진수 출력
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해서 출력해야 합니다. 풀이 • 내 풀이 import sys input = sys.stdin.readline def DFS(num): if num > 0: DFS(num//2) print(num%2, end='') N = int(input()) DFS(N) • 답안 : Python import sys input = sys.stdin.readline def DFS(N): if N == 0: return else: DFS(N//2) print(N%2, end='') #스택을 사용하기 때문에 출력 아래 -> 위 N = int(input()) DFS..
[파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 후위식 연산 (스택)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요. 풀이 • 내 풀이 import sys input = sys.stdin.readline e = input().rstrip() stack = list() for i in e: if i.isdecimal(): stack.append(int(i)) else: b = stack.pop() a = stack.pop() if i=='+': value = a+b elif i=='-': value = a-b elif i=='*': value = a*b else: value = a/b stack.append(value) print(stack[0]) • 답안 : Python impor..
파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 후위표기식 만들기 (스택)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 중위표기식이 입력되면 후위표기실으로 변환하는 프로그램을 작성하세요. 중위표기식은 우리가 흔히 쓰는 표현식입니다. 즉 3+5와 같이 연산자가 피연산자 사이에 있으면 중위표기식 입니다. 후위표기식은 35+와 같이 연산자가 피연산자 뒤에 있는 표기식 입니다. ex) 3+5*2 → 352*+ 풀이 • 답안 : Python import sys input = sys.stdin.readline e = input().rstrip() stack = list() result = "" for i in e: if i.isdecimal(): result += i else: if i == '(': stack.append(i) elif i=='*' or i=..
[파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 쇠막대기 (스택)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. - 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. (쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다.) - 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. - 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 이런 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여 왼쪽부터 순서대로 표현할 수 있다. 1. 레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 '(..
[파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 가장 큰 수 (스택)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하여 가장 큰 수를 만들라고 했습니다. 여러분이 현수를 도와주세요. (단, 숫자의 순서는 유지해야 합니다.) 풀이 • 답안 : Python import sys input = sys.stdin.readline num, m = map(int, input().split()) num = list(map(int, str(num))) stack = list() for x in num: # 숫자빼주는 로직 # stack -> 비어있으면 False, 비어있지X면 True # 비어있지않고 / 뺀횟수가 0보다 크고 / 가장 최근값이 나보다 작을 때 while stack ..
// 코드 블럭 복사