CodingTest (238) 썸네일형 리스트형 [ 백준 / BOJ ] 16922 로마 숫자 만들기 / 제출 1 / from itertools import combinations_with_replacement n = int(input()) count = [] opt = [1, 5, 10, 50] #for i in range(n+1): comb = list(combinations_with_replacement(opt, n)) comb = list(map(list, comb)) for c in comb: if sum(c) not in count: count.append(sum(c)) print(len(count)) 풀이 소요 시간: 22분 중간에 2번 정도 미끄러졌습니다. 1. 중복 조합으로 풀어야 하는데 조합으로 풀었습니다. 조합을 반복해서 카운트를 세면 된다고 생각했습니다. 이건 문제보다는 라이브러리를.. [ 백준 / BOJ ] 16917 양념 반 후라이드 반 / 제출 1 / a, b, c, x, y = map(int, input().split()) sum = 0 if c*2 [ 백준 / BOJ ] 1913 달팽이 ( 다시 풀기 ) 공간감각이 떨어져서 이런 유형의 구현 문제에 쥐약이다.. 진짜 돌겠어서 구글링해서 풀이를 몇 개 찾아서 공부했습니다. 시간 지나고 또 다시 풀기.. / 코드 1 / # 출처 : https://hbj0209.tistory.com/m/182 N = int(input()) target = int(input()) # 상, 우, 하, 좌 dx, dy = [-1, 0, 1, 0], [0, 1, 0, -1] # 처음 1의 위치 x, y에 넣어줌 if N % 2 == 1: x, y = N//2, N//2 else: x, y = N//2, N//2 - 1 m = [[0] * N for _ in range(N)] m[x][y] = 1 cnt = 2 dir = 0 num = 2 while True: for _ in rang.. [ 프로그래머스 / 파이썬 ] 프렌즈 4블록 / 구현 1 / def solution(m, n, board): answer = 0 # 각 값 쉽게 접근 위해 배열화 for i in range(m): board[i] = list(board[i].strip()) # popBlock 시작위해 무작위값 대입 popBlocks = ['a'] while popBlocks: # 전체 값 돌며 있나 체크 좌상이 기준 popBlocks = [] visited = [[False]*n * for _ in range(m)] for i in range(m-1): for j in range(n-1): ij = check(i, j, board) if ij: popBlocks.extend(check(i, j, board, visited))# 지워질 아이템 인덱스 배열 # 아래 .. [ 프로그래머스 ] 후보키 분명 데이터베이스 열심히 공부했었는데, 이렇게 문제로 만나니까 갑자기 개념이 헷갈렸습니다. 후보키에서 최소성이 "있어야"한다는 것인데, 꼬아서 생각되버렸기 때문입니다. 최소성 : 키를 구성하는 속성 하나를 제거하면 유일성이 깨져야한다. 즉, 어떤 속성이 제거되어도 여전히 유일성을 유지하면 안 되는 것입니다. 유일성을 유지한다는 이야기는, 위의 제거 되어도 무방한 속성 외에 유일성을 갖는 키 자체를 포함하고 있다는 이야기입니다. 즉, 최소성을 가진다는 이야기는 다른 후보키를 포함하지 않는다는 말이 됩니다. = A가 후보키일 때, B가 A를 포함하면 B는 최소성 위반으로 후보키가 되지 못하는 겁니다. B = A + b 인데, b가 사라져도 여전히 유일성을 유지하니까요! https://studyandwrite.. [ 프로그래머스 ] 순위 검색 / 제출 1 / def solution(info, query): answer = [] for q in query: lan, pos, lev, food = q.split(' and ') food, score = food.split(' ') score = int(score) count = check(lan, pos, lev, food, score, info) answer.append(count) return answer def check(lan, pos, lev, food, score, information): count = 0 for info in information: lan_i, pos_i, lev_i, food_i, score_i = info.split(" ") score_i = int(score_i.. [ 프로그래머스 ] 수식 최대화 / 구현 1 / from itertools import permutations def calculate(a, b, oper): if oper == '*': return a*b elif oper == '+': return a+b elif oper == '-': return a-b def solution(expression): answer = 0 nums = [] opers = [] num = '' for ex in expression: if ex == "*" or ex == "+" or ex == "-": opers.append(ex) nums.append(num) num = '' else: num += ex oper_order = list(permutations(['-','*','+'],3)) print.. [ 프로그래머스 ] 다리를 지나는 트럭 / 코드 1 / def solution(bridge_length, weight, truck_weights): q=[0]*bridge_length sec=0 while q: sec+=1 q.pop(0) if truck_weights: if sum(q)+truck_weights[0] weight: bridge.append(0) else: truck = truck_weights.pop() bridge.append(truck) total_weight += truck step += 1 step += bridge_length return step [ 프로그래머스 ] 124 나라의 숫자 def solution(n): answer = '' while n: if n%3: answer += str(n%3) n = n//3 else: answer += '4' n = n//3-1 answer = answer[::-1] return answer 으아 진법 개념 어렵다 역시 그래도 3진법 개념이라는게 빨리 들어와서 아이디어는 잡을 수 있었다. 여기서 체크할 것은 1. 문자열에 값 더할 때 str으로 변환해서 바로 더하는 것 2. if문에서 값이 1이면 true, 0이면 false처럼 바로 써도 되는 것. 3. 문자열 순서 뒤집기는 문자열[::-1]로 구현 [ 프로그래머스 ] 타켓 넘버 < 다시 풀기 > / 가져온 풀이 / def solution(numbers, target): answer = DFS(numbers, target, 0) return answer def DFS(numbers, target, depth): answer = 0 if depth == len(numbers): if sum(numbers) == target: return 1 else:return 0 else: answer += DFS(numbers, target, depth+1) numbers[depth] *= -1 answer += DFS(numbers, target, depth+1) return answer 너무 오랜만에 DFS/BFS문제를 풀려고 하니 머릿 속에 잘 안 들어왔습니다. 해서 다른 분 풀이를 이용해 공부를 하는 식.. 이전 1 ··· 17 18 19 20 21 22 23 24 다음 목록 더보기