목록알고리즘/백준 (257)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/15650 풀이 코드n, m = map(int, input().split())s = []def f(start): if len(s) == m: print(*s) return for i in range(start, n + 1): if i not in s: s.append(i) f(i+1) s.pop() f(1)코드 해석https://woojinhong.tistory.com/151 [백준] 15649번: N과 M (1)/ 파이썬문제 링크 https://www.acmicpc.net/problem/15649 15649번: N과 ..
문제 링크https://www.acmicpc.net/problem/1182풀이 코드n, s = map(int, input().split())num = list(map(int, input().split()))cnt = 0dap = []def hap(inp): global cnt if sum(dap) == s and dap: cnt += 1 for i in range(inp, n): dap.append(num[i]) hap(i+1) dap.pop()hap(0)print(cnt)코드 해석재귀함수를 사용한다.dap이라는 빈 리스트를 만든 뒤 리스트에 숫자들을 넣는다.만약 리스트의 합이 s와 같다면 cnt + 1을 한다. n = 5, s = 0, ..
문제 링크https://www.acmicpc.net/problem/2740 풀이 코드import sysinput = sys.stdin.readlinen, m = map(int,input().split())a = [list(map(int,input().split())) for i in range(n)]m, k = map(int,input().split())b = [list(map(int,input().split())) for i in range(m)]for i in range(n): result = [] for j in range(k): x = 0 for l in range(m): x += a[i][l] * b[l][j] result.ap..
문제 링크https://www.acmicpc.net/problem/4659풀이 코드while True: password = input() if password == 'end': break mopo = 'aeiou' acceptable = True if not any(x in password for x in mopo): # 모음 하나 포함 acceptable = False mo, ja = 0, 0 for i in password: if i in mopo: mo += 1 ja = 0 else: mo = 0 ja..
문제 링크https://www.acmicpc.net/problem/10431풀이 코드p = int(input())for _ in range(p): ki = list(map(int,input().split())) tot = 0 for i in range(1,len(ki)-1): for j in range(i+1,len(ki)): if ki[i] > ki[j]: ki[i],ki[j] = ki[j],ki[i] tot += 1 print(ki[0], tot) 코드 해석더블 정렬을 이용하여 풀었다.https://wikidocs.net/233706 체감 난이도: ★★☆☆☆ 5-01. Sort : Bubble..
문제 링크https://www.acmicpc.net/problem/2805풀이 코드n, m = map(int, input().split())namu = list(map(int, input().split()))start = 1end = max(namu)while start = mid: # 나무의 길이가 중간값보다 높다면 tot += i - mid # 자른 값을 더한다. if tot >= m: # 총 자른 값이 필요한 값보다 많다면 start = mid + 1 # 시작점을 중간값+1로 설정한다. else: end = mid - 1 # 아니라면 끝나는점을 중간값-1로 설정한다. print(end) 코드 해석그냥 했더니 시간 초과..
문제 링크https://www.acmicpc.net/problem/11279풀이 코드import heapqimport sysinput = sys.stdin.readline()n = int(input())max = []for _ in range(n): number = int(input()) if number > 0: heapq.heappush(max, -number) else: if not max: print(0) else: print(-heapq.heappop(max)) 코드 해석파이썬의 heap 모듈을 사용하여 풀이한다.만약 받은 수가 0보다 클 경우heap에 값을 -화 하여 집어넣는다(최대 힙 구현)출력시에는..
문제 링크https://www.acmicpc.net/problem/1912 풀이 코드n = int(input())su = list(map(int,input().split()))for i in range(1, n): su[i] = max(su[i], su[i-1] + su[i])print(max(su)) 코드 해석리스트 속의 현재 값과 지금까지 더한값을 비교하여더 큰 수를 현재 값으로 지정하며 나아간다. 최종적으로 리스트 속에 남아있는 값들 중 가장 큰 값을 출력한다. 체감 난이도: ★★★☆☆