본문 바로가기
  • 개발하는 곰돌이

완전 탐색3

[Kotlin] 백준 27162 : Yacht Dice 문제 링크 27162번: Yacht Dice 《Yacht Dice》는 여러 명이 플레이하는 주사위 게임입니다. 플레이어는 우선 주사위를 $5$개 굴립니다. 이후 원하는 주사위를 고정시킨 뒤, 남은 주사위를 다시 굴리는 일을 두 번 이하로 할 수 있 www.acmicpc.net 문제 해설 다양한 조건 분기에 따라 조건에 맞는 계산을 수행하는 문제. Y에 해당하는 족보의 점수를 모두 계산한 후 가장 높은 값을 출력하면 된다. 이미 3개의 주사위가 고정되어 있기 때문에 나머지 2개의 주사위가 최적인 경우를 생각해볼 수 있다. Ones부터 Sixes까지는 나머지 2개의 주사위가 족보에서 요구하는 주사위의 눈이 나왔을 때 최대가 된다. 즉, 입력으로 주어진 고정된 주사위 중에서 (족보에 따라 1~6의 개수 + 2.. 2023. 9. 5.
[Kotlin] 백준 4673 : 셀프 넘버 문제 링크 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 해설 완전탐색법으로 풀어야 하는 문제다. 먼저 1~10000까지의 수가 셀프 넘버인지 검사할 배열을 선언한다. 이후 1부터 10000까지 모든 수에 대해 d(n)을 구하고, d(n)이 10,000 이하일 경우 배열의 d(n)번째 값을 true로 변경한다.(true는 d(n)의 생성자 n이 존재하는 경우를 뜻한다.) 이후 배열에서 값이 false인 인덱스를 모두 출력하면 된다. Code fun ma.. 2022. 11. 25.
[Kotlin] 백준 1251 : 단어 나누기 문제 링크 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 문제 해설 완전 탐색법으로 풀어야 하는 문제다. 주어진 단어를 3개로 나눈 후 각각을 뒤집어서 합쳐서 나온 단어들 중 사전순으로 가장 앞서는 단어를 구하기 위해서 2중 반복문을 돌려서 각 경우의 단어를 만든다. 이후, 새롭게 만들어진 단어와 이전 케이스에서 나온 단어를 비교하여 사전순으로 앞서는 단어를 비교하여 앞서는 단어를 결과에 저장하는 과정을 반복하여 해답을 구한다. Kotlin에서는 slice() 메소드를 통해 문자열을 쉽게 나눌 수 있으며 re.. 2022. 11. 23.