[백준/Python] 1449번. 수리공 항승
·
코딩테스트/BAEKJOON
📌 문제유형: 탐욕법(그리디) 📌 문제링크 https://www.acmicpc.net/problem/1449 📌 풀이코드 N, L = map(int, input().split())holes = list(map(int, input().split()))covered = [0 for _ in range(len(holes))]holes.sort()count = 0for i, h in enumerate(holes): able = [(h-0.5), (h-0.5) + L] # 커버 가능한 범위 if not covered[i]: covered[i] = 1 count += 1 for j in range(i+1, len(holes)): if able..
[백준/Python] 3085. 사탕게임
·
코딩테스트/BAEKJOON
📌 문제유형: 브루트포스 📌  문제설명: 링크참조 https://www.acmicpc.net/problem/3085 📌  풀이코드 # 2:27 startdef search(): global answer # 가로, 세로로 가장 긴 연속 부분을 찾아야 함 # 1. 행 쪽 for i in range(N): cnt = 1 # 1로 시작해야 마지막까지 셀 수 있다. for j in range(N-1): if arr[i][j] == arr[i][j+1]: cnt += 1 answer = max(answer, cnt) else: # 연속을 찾아야 되는데, 중간에 끊기면..
[알고리즘 전략] 완전탐색
·
알고리즘
** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.** 주의점, 기억해야할 것을 위주로 작성합니다.  브루트 포스 Brute-Force - 무차별 대입이라는 의미. - 완전탐색 전략을 충실히 사용해서 확실하게 답을 구하는 알고리즘- 어떤 문제를 풀 때 먼저 '무식하게 모든 경우를 다 살펴봐도 될까?' 생각해보기 (제한시간 오버되면 다른 방법 생각하기)  ** 문제 푸는 방법   1. 반복문   2. 재귀   3. 순열   4. 조합=> 삼성 코테에서 순열 조합 많이 쓰인다고 함.  순열 - n개의 수 중에서 r개를 뽑아 줄을 세우는 총 방법의 수: nPr = n! / (n-r)! - 순서 고려 O - permutations(배열이름, 몇개를 고를지)from itertools import..
[백준/Python] 3040. 백설 공주와 일곱 난쟁이
·
코딩테스트/BAEKJOON
🍀 문제유형: 브루트포스/ DFS 🍀  문제설명(링크참조) https://www.acmicpc.net/problem/3040🍀  풀이코드 # 방법1. DFS # 11:35 start 56 end# dfs..def dfs(i, total, result, cnt): global answer if cnt == 7: if total == 100 : answer = result return if i == 9: return # cnt = 7 이지만 100이 아니면 멈춰야 해 #i 포함 X dfs(i+1, total, result, cnt) #i 포함 O dfs(i+1, total+nums[i], result+..
[백준/Python] 2075. N번째 큰 수
·
코딩테스트/BAEKJOON
🍀 문제유형: 최소힙🍀 문제설명 (링크 참조) https://www.acmicpc.net/problem/2075 🍀 풀이코드 - 첫 시도는 최대 힙 만들어서 n번째 뽑아야지! 했는데 메모리 초과 ~.~import heapq as hqn = int(input())h = []for _ in range(n): tmp = list(map(int, input().split())) for t in tmp: hq.heappush(h, -t)print(-h[n-1]) - 그래서 뭐 어떻게 해야 되지.. 하다가, 최소힙을 각 행마다 만드는 것도 무리일 것 같고,, 고민하다가 해설집 힌트 조금 봤다. n번째로 큰 수는, 가장 큰 수 n개 중에 제일 작은 값이다의 다른 말.. 와우 아이디어,,-..
[백준/Python] 1935. 후위 표기식 2
·
코딩테스트/BAEKJOON
🍀 문제유형: 스택 🍀  문제설명(링크 참조) https://www.acmicpc.net/problem/1935 🍀  풀이코드 n = int(input())cmds = input()nums = []for _ in range(n): nums.append(int(input()))#pt = 0stk = []for cmd in cmds: if cmd.isalpha(): stk.append(nums[ord(cmd)-ord('A')]) #stk.append(nums[pt]) #pt += 1 else: a = stk.pop() b = stk.pop() #print(f"about a{a}, b{b}") if c..