728x90
# 1436 영화감독 숌
N = int(input())
arr = []

d = 665
while len(arr) != N:
    a = list(str(d))
    for i in range(len(a)-2):
        if a[i]+a[i+1]+a[i+2] == '666':
            arr.append(d)
            break
    d += 1
print(arr[N-1])
728x90

'Algorithm' 카테고리의 다른 글

백준 15649 파이썬  (0) 2022.01.17
백준 1697 파이썬  (0) 2022.01.14
백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
백준 7569 파이썬  (0) 2022.01.12
백준 1181 파이썬  (0) 2022.01.12
728x90

브루트포스 알고리즘이란?

 완전 탐색법이라고도 불리는 브루트포스 알고리즘은 무차별 대입법이라고도 하며,

어떤 문제에 관해서 가능한 모든 경우의 수를 구하고 답을 찾아내는 것을 말한다.

그렇기 때문에 답이 틀릴 수는 없지만 시간 효율성 측면에서 좋지 않다.

 


 

2021.12.17 - [Algorithm] - 백준 2798 파이썬

 

백준 2798 파이썬

2021.12.17 백준 2798 블랙잭 #2798 블랙잭 /브루트포스 알고리즘 N,M = map(int, input().split()) # 카드의 개수, 목표값 arr = list(map(int, input().split())) # 카드에 쓰여진 수 P = [] # 카드 3장의 합의..

chongmin-k.tistory.com

전에 올린 백준 문제 2798_블랙잭도 브루트포스 알고리즘으로 푸는 문제이다.

 

문제를 풀기위해서는 나올 수 있는 세 카드 합의 경우의 수를 모두 찾고

그중에서 M보다 작으면서 가장 큰 값을 찾아내면 되는 문제다. 

 

조사해보면서 문제를 풀기 위해서는 여러 방법이 있다고 한다.

선형구조형으로 만들거나 BFS/DFS를 사용하거나 재귀를 이용하기도 하고 반복문으로도 풀 수 있다.

때문에 문제를 풀 때 가장 먼저 고려해야 할 것은 '모든 경우의 수를 찾아야 하는가?'인 듯하다.

728x90

'Algorithm' 카테고리의 다른 글

DFS 알고리즘 정리  (0) 2021.12.31
백준 2606 파이썬  (0) 2021.12.29
백준 2798 파이썬  (0) 2021.12.17
코드업(CodeUp) 3120 파이썬  (0) 2021.12.16
백준 13305 파이썬  (0) 2021.12.13
728x90

2021.12.17

백준 2798 블랙잭

#2798 블랙잭 /브루트포스 알고리즘

N,M = map(int, input().split())        # 카드의 개수, 목표값
arr = list(map(int, input().split()))  # 카드에 쓰여진 수
P = []                                 # 카드 3장의 합의 모든 경우의 수


for i in range(N):
    for j in range(i+1,N):
        for ii in range(j+1,N):
            S = arr[ii]+arr[i]+arr[j]
            P.append(S)
R = M                       # M - i의 최솟값을 저장하기 위한 변수            
Q = 0                       # R의 최솟값을 가지는 Q
for i in P:
    if M - i < R and M - i >= 0:
        R = M - i
        Q = i

print(Q)

모든 경우의 수를 구하는 문제라고 한다.

목푯값인 M과 카드 3장의 합인 P의 요소 중에 그 차이가 가장 작은 게 답이라는 아이디어로 풀었다.

#2798 블랙잭 /브루트포스 알고리즘

N,M = map(int, input().split())        # 카드의 개수, 목표값
arr = list(map(int, input().split()))  # 카드에 쓰여진 수
P = []                                 # 카드 3장의 합의 모든 경우의 수


for i in range(N):
    for j in range(i+1,N):
        for ii in range(j+1,N):
            S = arr[ii]+arr[i]+arr[j]
            if S <= M:
                P.append(S)

print(max(P))

풀고 나서 더 깔끔하게 만들어봤다. 메모리랑 시간도 미세하지만 아래 코드가 더 낫다.

 

combinations을 import해서 푸는 방법도 있는데 그건 나중에 알았으니 이제라도 잘 기억해야지

from itertools import combinations
728x90

'Algorithm' 카테고리의 다른 글

백준 2606 파이썬  (0) 2021.12.29
브루트포스(Brute Force) 알고리즘  (0) 2021.12.20
코드업(CodeUp) 3120 파이썬  (0) 2021.12.16
백준 13305 파이썬  (0) 2021.12.13
백준 1541 파이썬  (0) 2021.12.10

+ Recent posts