블랙잭 [2798]

2021. 3. 8. 02:57알고리즘/파이썬

반응형

블랙잭 [2798]

백준 - https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

깃헙 - https://github.com/shs9509/study

문제

  • 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다.

  • 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다.

  • 블랙잭은 카지노마다 다양한 규정이 있다.

  • 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다.

  • 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다.

  • 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다.

  • 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다.

  • 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.

  • N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오.


입력

  • 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다.

  • 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다.

  • 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다.

출력

  • 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.


풀이과정

  • 순열의 문제인데.. 거기에 sum 을 곁들인... 문제이다.

  • 주어진 카드들에서 3개의 순열을 만들고 거기서 정해진 값을 넘지않는 최대값을 추출하면 된다.

깃헙에 코드있음!


느낀점

  • 순열을 만들수 안다면 어렵지않다.

  • sum의 제한을 거는곳에서 좀더 효율적으로 할수있는 것을 알 수 있었다.

    • 굳이 li 라는 리스트를 안만들고 바로 다루는것이다.

    • 밑의 방식을 취하면 order과 li는 만들 필요가 없다!

    • 밑 코드는 미완성! 참고만 바란다.

이런느낌!

  • 좀더 순열이라는 것을 능숙하게 다룰 필요성을 느낌! 아직 부족하다.

반응형

'알고리즘 > 파이썬' 카테고리의 다른 글

적록색약 [10026]  (0) 2021.03.08
일곱 난쟁이 [2309]  (0) 2021.03.08
색종이 [10163]  (0) 2021.02.24
스위치 켜고 끄기 [1244]  (0) 2021.02.24
후보 추천하기 [1713]  (0) 2021.02.24