본문 바로가기

분류 전체보기

(116)
파이썬 | 백준 | 15650 | N과 M(2) | lst = range(1, n+1) solution 1. 조합 이용 2. lst = range(1, n+1) # 15650, N과 M(2) import sys from itertools import combinations n, m = map(int, sys.stdin.readline().split()) lst = range(1, n + 1) res = list(combinations(lst, m)) for res_ in res: print(*res_) 29380KB 60ms 문제 출처 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순..
파이썬 | 백준 | 14888 | 연산자 끼워넣기 solution 1. 순열(permutations) 이용해 연산자의 순서 리스트를 만듦 2. set()으로 중복 제거 # 14888, 연산자 끼워넣기 import sys from itertools import permutations N = int(sys.stdin.readline().rstrip()) num = list(map(int, sys.stdin.readline().split())) arr = list(map(int, sys.stdin.readline().split())) operator = [] for i in range(4): for j in range(arr[i]): operator.append(i) op = list(permutations(operator)) max_ = -100000000..
파이썬 | 백준 | 15686 | 치킨 배달 | 조합(combinations) solution 1. 조합을 이용해 전체 치킨집에서 M개 선택 2. 집에서 치킨거리를 각각 구해 최소가 되는 조합을 구함 # 15686, 치킨 배달 import sys from itertools import combinations def getDistance(x, y): min_ = 100 for i in range(len(y)): min_ = min(min_, abs(y[i][0]-x[0])+abs(y[i][1]-x[1])) return min_ N, M = map(int, sys.stdin.readline().split()) city = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] home = [] chicken = [] for ..
파이썬 | 백준 | 1543 | 문서 검색 solution 1 : replace() 이용 1. 문서에서 검색하려는 단어를 탐색해 특정 문자(*) 로 대체 2. 문서에서 * 갯수 출력 # 1543, 문서 검색 import sys s1 = sys.stdin.readline().rstrip() s2 = sys.stdin.readline().rstrip() s1 = s1.replace(s2, '*') cnt = 0 for ch in s1: if ch == '*': cnt += 1 print(cnt) 29380KB 60ms solutoin 2 : count ()이용 # 1543, 문서 검색 import sys s1 = sys.stdin.readline().rstrip() s2 = sys.stdin.readline().rstrip() print(s1.cou..
파이썬 | 백준 | 2503 | 숫자 야구 | 순열(permutations) solution 1. 순열(permutations) 이용 2. int는 list() 불가능 → list(str(x)) # 2503, 숫자 야구 import sys from itertools import permutations n = [1, 2, 3, 4, 5, 6, 7, 8, 9] num = list(permutations(n, 3))# 순열로 3개씩 뽑음 t = int(sys.stdin.readline()) for _ in range(t): test, s, b = map(int, sys.stdin.readline().split()) test = list(str(test)) removed_cnt = 0 # 배열에서 제거된 튜플 개수 # num : 3개 리스트 leng = len(num) for i in ..
파이썬 | 백준 | 4949 | 균형잡힌 세상 solution 1. 스택 이용 # 4949, 균형잡힌 세상 import sys txt = [] # 문자열 입력 while True: str = sys.stdin.readline().rstrip() if str == '.': break txt.append(str) ans = [] # yes, no 저장할 배열 for txt_ in txt: check = 1 # 균형 잡힌 문자열이면 1 stack = [] for i in txt_: if i == '(': stack.append('(') elif i == ')': if len(stack) == 0 or stack[-1] != '(': check = 0 # 균형 잡힌 문자열 X break else: stack.pop() elif i == '[': stack...
파이썬 | 백준 | 2468 | 안전 영역 solution 1. dfs 이용 2. 빗물의 높이는 1이상 100이하 & 안 잠길 수도 있음 → for i in range(101) 3.sys.setrecursionlimit(50000) # 2468, 안전 영역 import sys sys.setrecursionlimit(50000) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(h, x, y): visited[x][y] = 1 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 h and visited[i][j] == 0: cnt += 1 dfs(h, i, j) return cnt N = int(sys.stdin.readline()) area = [] for _ in ra..
파이썬 | 백준 | 10546 | 배부른 마라토너 solution 1. dictionary 이용 2. 첫 번째 나오면 dictionary에 추가, 두 번째 나오면 dictionary에서 삭제 3. 마지막에 dictionary에 남은 이름이 완주하지 못한 참가자 # 10546, 배부른 마라토너 import sys N = int(sys.stdin.readline()) people = {} for _ in range(2*N-1): name = sys.stdin.readline().rstrip() if people.get(name) is None: people[name] = 1 else: del(people[name]) print(*people) 41672KB 208ms 문제 출처 https://www.acmicpc.net/problem/10546 10546번..