본문 바로가기

Algorithm Study19

[TopCoder] BrokenStrings (C#, Java) https://arena.topcoder.com/#/u/practiceCode/13700/6947/7748/1/299645 Topcoder Arena Topcoder Arena Web arena.topcoder.com 문제 요약 -기타의 줄을 새로 사야하는데, 각 브랜드에서는 6개의 줄을 패키지로 구입하거나, 단품으로 1개의 줄을 구입할 수 있다. -문자열 stringCosts는 한 브랜드의 "패키지가격 단품가격"으로 구성되어 있다. -한 번에 여러 브랜드에서 구입할 수 있다. -최소한 n개의 줄을 구입하는 데 필요한 최소 비용을 찾아야 한다. 예시로, n=4, stringCosts={"12 3", "15 4"}로 주어졌을 때, 첫번째 브랜드에서 1개의 패키지로 사거나(12), 첫번째 브랜드에서 단품으로.. 2023. 10. 10.
[TopCoder] AdditionGame (Java) Practice - TopCoder Arena Topcoder Arena Topcoder Arena Web arena.topcoder.com 문제 파악하기 1. 같은 행동을 N번 실행하는 것이므로 재귀함수를 사용하자. A, B, C에서 하나를 고르는 행동을 N번 하는 것이기 때문에, 하나를 고르는 함수를 하나 만드는 것이 좋다고 생각하였다. 하나를 고르면 해당 숫자가 -1 줄고(1보다 작으면 줄지 않음), 그 숫자들을 다시 함수에 넣어 N번 실행한다. 2. A, B, C 중 가장 큰 숫자를 찾는 함수를 만들자. 사실 for문을 사용해도 되는데, 그냥 존재하는 세 개의 수 중에서 가장 큰 값의 알파벳과 그 숫자값을 가져오는 함수를 한 ㅏ또 만들었다. (Java) public class AdditionGam.. 2023. 8. 14.
[TopCoder] 회문 (Java, C#) 본과 브루스는 대학에서 문자열 이론을 공부하고 있습니다. 브루스는 회문을 좋아합니다. 회문은 앞에부터 읽으나, 뒤에서부터 읽으나 같은 단어를 말합니다. 존은 브루스를 임의의 문자열 s로 회문을 만들어 브루스를 깜짝 놀래켜주고 싶습니다. 이때 존은 문자열 s뒤에 0개 이상의 숫자를 추가해 회문을 생성하려고 한다 존이 생성할 수 있는 가장 짧은 회문의 길이를 리턴하세요. 응용문제: 최소 길이인 회문도 구하기 문제 파악하기 1. 일단 무조건 회문이 되는 방법은 s를 거꾸로 해서 이어 붙이는 것이다. 하지만 이 방법은 최소 길이가 아니다. 2. s에서 뒤에 단어를 하나씩 붙여가며 회문인지 확인한다. 0개를 붙인 것(이미 회문인 상태)부터 하나씩 이어붙여서 확인하면 최소 회문 길이를 알 수 있다. ex) 인덱스 .. 2023. 8. 13.
[TopCoder] InterestingDigits (Java, C#) 숫자 3과 9는 재미있는 성질이 있습니다. 3의 배수의 각 자릿수의 합은 다른 3의 배수가 됩니다. 예를 들어 118 * 3 = 354이고 3+5+4=12는 3의 배수입니다. 마찬가지로 9의 배수의 각 자릿수의 합은 다른 9의 배수가 됩니다. 예를 들어 75 * 9=675이고 6+7+5=18은 9의 배수입니다. 어떤 진법에서 이러한 성질을 갖는다고 다른 진법에서 이러한 성질을 가지지는 않습니다. 예를 들어 10진수에서 3은 이러한 성질을 가지지만 5진수에서는 성립하지 않습니다. base 진법이 주어졌을 때 이러한 성질을 가진 수를 오름차순으로 모두 리턴하세요.(다만 0과 1은 제외합니다). 어떤 수가 이러한 성질을 가지는지 알고자 모든 숫자의 곱을 고려할 필요는 없습니다. 만약 4자리 미만의 곱으로 성립.. 2023. 8. 12.
[TopCoder] Cryptography (C#, Java) TopCoder Security Agency는 새로운 암호화 시스템을 개발했습니다. 이 시스템은 암호화하려고 숫자 리스트를 입력받습니다. 여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부분을 구현하는 것이 여러분의 일입니다. 여러분은 입력 리스트에서 1개의 값을 선택하고 값을 1 증가시킵니다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다. int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓값을 리턴하세요. 리턴값이 2^62를 넘는 문제는 나오지 않을 것을 보장합니다. 문제 파악하기 1. 기본적으로 모든 숫자의 곱인데, 하나의 숫자만 1이 커야한다. 모든 숫자의 곱보다는 큰 값이어야 하므로, 기본 max값을 모든 숫자의 곱으로 설정한다. 2. 숫자 하나씩 1을 .. 2023. 8. 12.
[프로그래머스] 카펫 (Java, C#) https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (Java) import java.util.*; class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int sum = (brown+4)/2; int mul = yellow + brown; answer[0] = (sum + (int)Math.sqrt(sum*sum-4*mul))/2; ans.. 2023. 8. 11.
[TopCoder] InterestingParty (C#, Java) 화이트씨는 다재다능한 사람입니다(모든 것이 그의 관심 대상입니다.) 그래서 그에게는 친구가 많습니다. 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다. 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화제가 있을 때 파티를 즐긴다는 것을 알았습니다. 문자열 배열 first, second가 주어집니다. 화이트씨의 i번째 친구가 흥미 있는 화제는 first[i]와 second[i]입니다. 즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇 명인지 리턴하세요. 문제 파악하기 1. first 취.. 2023. 8. 11.
[TopCoder] KiwiJuiceEasy (C#, Java) 타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라 이름을 붙인 N개의 병에 키위 주스를 넣었습니다. 이때 i번째의 병의 용량은 capacities[i] 리터이며 타로가 i번째 병에 넣은 키위 주스의 양을 bottles[i] 리터라고 합니다. 타로는 병에 키위 주스를 재분배하려고 하며, 0부터 M-1까지 M회 조작합니다. i번째의 조작은 타로가 병 fromId[i]부터 병 toId[i]에 키위 주스를 넣는 것을 의미합니다. 병 fromId[i]가 비어 있거나 병 toId[i]가 꽉 차 있는 순간, 타로는 더 이상 키위 주스를 넣지 않습니다. N개의 요소를 가진 정수 배열 int[]를 리턴해주세요. 배열의 i번째 요소는 모든 주스를 쏟는 작업이 완료되고 i번째 병에 남아 있는 키위 주스의 양.. 2023. 8. 10.

"); wcs_do();