백준 /1912번 / 연속합 / python 파이썬
·
코딩테스트/백준 (python)
문제 :  https://www.acmicpc.net/problem/1912 내 답안n = int(input())num = list(map(int, input().split()))dp = [0] * ndp[0] = num[0]for i in range(1, n): dp[i] = max(num[i], num[i] + dp[i-1])print(max(dp)) 다이나믹 프로그래밍(DP)으로 해결할 수 있는 문제이다. 현재 숫자를 포함해 앞에서부터 더해온 값과 현재 값을 비교했을 때, 현재 숫자가 크다면 앞에서 더해온 값은 총합을 키우는데 의미가 없다. 따라서 현재까지 더해온 값을 DP 테이블에 저장하고 현재 값과 비교해가면서 문제를 해결할 수 있다.
백준 / 1021번 / 회전하는 큐 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1021  덱 자료구조를 활용해 구현하면 쉽게 풀 수 있는 문제이다.  큐는 선입선출 방식이지만 덱은 양방향으로 삽입과 삭제 ( popleft, appendleft )가 가능하며,   시간 복잡도가 O(1)이다.  코드import sysfrom collections import dequeinput = sys.stdin.readlineN, M = map(int, input().split())num = list(map(int, input().split()))q = deque(_ for _ in range(1, N + 1))count = 0for i in num: while True: if q[0] == i: ..
백준 / 1541번 / 잃어버린 괄호 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1541  문제 접근이 문제는 괄호가 없는 식이 주어졌을 때, 예를 들어 2 + 3 - 10 + 5 + 22 라는 식이 있을 때 괄호를 넣어 식의 값을 최소로 만드는 코드를 작성해야 한다. 값이 최소가 되기 위해서는 '-'를 기준으로 사이에 있는 값들에 괄호를 넣으면 최솟값을 구할 수 있다. 따라서 입력을 받을 때 split('-')을 사용해 나누고,  이 나누어진 각각의 문자열의 연산 결과를 구하기 위해 split('+')을 하고, 그 값을 for문을 돌려 더한 뒤 tmp 배열에 넣는다. 이후 배열의 값들을 마이너스 연산을 하면 괄호를 넣어서 계산한 연산 결과와 동일한 결과를 얻을 수 있다. 코드n = input().split('-')t..
백준 / 2178번 / 미로 탐색 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/2178  문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다..
백준 / 1149번 / RGB거리 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1149  코드import sysinput = sys.stdin.readlinen = int(input())HC = []for _ in range(n): HC.append(list(map(int, input().split())))for i in range(1, n): HC[i][0] = HC[i][0] + min(HC[i - 1][1], HC[i - 1][2]) HC[i][1] = HC[i][1] + min(HC[i - 1][0], HC[i - 1][2]) HC[i][2] = HC[i][2] + min(HC[i - 1][0], HC[i - 1][1])print(min(HC[n-1])) 이전 집에서 사용한 색을 제외한 ..
백준 / 1759번 / 암호 만들기 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1759  코드from itertools import combinationsL, C = map(int, input().split())alpabet = sorted(list(input().split()))vowel = {'a', 'e', 'i', 'o', 'u'}result = []for pw in combinations(alpabet, L): count_vowels = sum(1 for i in pw if i in vowel) if count_vowels >= 1 and L - count_vowels >= 2: result.append(''.join(pw))for pw in result: print(pw) 서로..
백준 / 1107번 / 리모컨 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1107  코드 import sysinput = sys.stdin.readlinen = int(input())m = int(input())ans = abs(100 - n)if m: btn = list(input().split())else: btn = []for num in range(1000001): for i in str(num): if i in btn: break else: ans = min(ans, len(str(num)) + abs(num - n))print(ans) 처음에는 버튼을 최소한으로 눌러야 한다는 조건에 고장난 버튼의 최소, 최댓값과 ans(n - 100)..
백준 / 28278번 / 스택 2 / python 파이썬
·
코딩테스트/백준 (python)
문제 : 28278번: 스택 2 (acmicpc.net) https://www.acmicpc.net/problem/1181  기초적인 스택의 동작 방식만 알면 쉽게 풀 수 있는 문제였다. 코드 import sysinput = sys.stdin.readlinestack = []n = int(input())for i in range(n): x = list(map(int, input().split())) if x[0] == 1: stack.append(x[1]) elif x[0] == 2 : if stack: print(stack.pop()) else: print(-1) elif x[0] == 3: ..