백준 문제풀이/브루트포스(Bruteforce) 4

백준 온라인 저지 - 체스판 다시 칠하기(#1018) 파이썬

문제설명 이 문제는 가능한 모든 경우의 수를 for loop을 통하여 접근하여 최솟값을 결정하는 문제입니다. 파이썬의 List slicing 기능을 이용하여 주어진 문제를 보다 쉽게 해결할 수 있었습니다. 체스판 다시 칠하기(#1018) 파이썬 코드 import sys #입력 M, N = map(int, input().split()) inp = [] for i in range(M): inp.append(sys.stdin.readline()) # 체스판 자르기 def cut_board(first_board): length = len(first_board) width = len(first_board[0]) board_list = [] for w in range(width - 7): for l in range..

백준 온라인 저지 - 덩치(#7568) 파이썬

문제설명 이 문제는 입력받은 순서대로 덩치 랭킹을 매겨야 하기 때문에, ranking이라는 List를 따로 만들고, 사람들의 키, 몸무게가 담겨있는 people이라는 List에서 사람들의 키와 몸무게를 이중 for문을 이용하여 모두 비교한 후 조건을 충족하면 ranking의 해당 인덱스의 값을 +1 해주는 식으로 해결하였습니다. 자세한 사항은 코드를 참고하시기 바랍니다. 문제이름(# 문제번호) 파이썬 코드 import sys n = int(sys.stdin.readline()) people = [tuple(map(int, sys.stdin.readline().split())) for i in range(n)] ranking = [1 for k in range(n)] for i in range(len(pe..

백준 온라인 저지 - 분해합(#2231) 파이썬

문제설명 이 문제는 각 자릿수의 합을 문자열로 보고 문자열의 각 요소를 더해줌으로써 쉽게 해결할 수 있습니다. 0부터 n까지 숫자를 오름차순으로 검사하다가 조건에 맞는 수가 나오면 종료하는 방법으로 풀 수 있습니다. 자세한 풀이는 코드를 참고하시면 됩니다. 분해합(#2231) 파이썬 코드 n = int(input()) result = 0 for i in range(n): dcp = i + sum(int(j) for j in str(i)) # dcp = decomposition(분해합) if dcp == n: # 분해합이 n일 경우 결과값에 i값 할당, 반복문 종료 result = i break print(result)

백준 온라인 저지 - 블랙잭(#2798) 파이썬

문제설명 브루트포스는 조합 가능한 모든 경우의 수를 하나씩 검사하는 방법입니다. 이 문제는 3개의 숫자의 합이 M을 넘지 않으면서 M과 가장 가까운 수를 찾아야 합니다. 저는 itertools의 combinations 함수를 사용하여 주어진 카드 중 3장을 골라 조합할 수 있는 경우의 수를 모두 구해 coc라는 리스트에 담았습니다. 그 다음 coc 리스트 내에 있는 카드의 조합들을 검사하여 m이 넘지 않는 가장 큰 수를 구하였습니다. 자세한 내용은 코드를 참고하시면 됩니다. 문제이름(# 문제번호) 파이썬 코드 import sys import itertools n, m = map(int, sys.stdin.readline().split()) cards = list(map(int, sys.stdin.read..