bestwish
Hong's Tistory
bestwish
전체 방문자
오늘
어제
  • 분류 전체보기 (32)
    • DevOps (21)
      • Django (15)
      • TIL (2)
      • Python (2)
      • Git (0)
      • Docker (1)
      • Infra (1)
    • Algorithm (3)
      • 백준문제 (3)
      • 이론 (0)
    • CS (6)
      • Data Structure (6)

인기 글

최근 글

hELLO · Designed By 정상우.
bestwish

Hong's Tistory

Algorithm/백준문제

[Baekjoon]2798번 블랙잭

2022. 6. 30. 20:05

문제
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다.

어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다.

따라서 245는 256의 생성자가 된다.

물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

Python3 답

n, m = map(int, input().split())
l = list(map(int,input().split()))
result = 0

for i in range(n):
    for j in range(i+1, n):
        for a, k in enumerate(range(j+1, n)):
            if result < (l[i] + l[j] + l[k]):
                if  m >= (l[i] + l[j] + l[k]):
                    result = (l[i] + l[j] + l[k])

print(result)

코드풀이

10단계는 브루트 포스 알고리즘이다.
brute 단순히, force 힘으로 단순하게 힘만 갖고 밀어 붙인다는 소리이다.
완전탐색 알고리즘으로 가능한 모든 경우의 수를 탐색하면서 요구조건에 충족되는 결과를 가져온다.
참고

나는 l에 1, 2, 3, 4, 5가 들어왔다고 생각하고, i가 1일 때를 가정해봤다.
아래 표처럼 나타난다.

1 2 3 4 5
○ ○ ○
○ ○ ○
○ ○ ○
○ ○ ○
○ ○ ○
○ ○

카드를 3장을 뽑으니, for문이 3번 반복될꺼라 생각하고, 코드를 짰다.
2번째 ○와 3번째 ○의 시작지점을 어떻게 짜야하는가?에서 시간이 조금 걸렸지만 어렵지는 않은 문제였다.

'Algorithm > 백준문제' 카테고리의 다른 글

[Baekjoon]11729번 하노이의 탑 이동 순서  (0) 2022.06.27
[Baekjoon] 2941번 크로아티아 알파벳  (0) 2022.04.12
    'Algorithm/백준문제' 카테고리의 다른 글
    • [Baekjoon]11729번 하노이의 탑 이동 순서
    • [Baekjoon] 2941번 크로아티아 알파벳
    bestwish
    bestwish

    티스토리툴바