본문 바로가기

Project/Algorithm31

[백준 알고리즘] 1010 다리 놓기 다이나믹 프로그래밍 분류에 있는 다리 놓기 문제입니다.이 문제는 두가지 방법으로 풀 수 있습니다.조합과 다이나믹 프로그래밍 방법 두 가지로 풀 수 있는데오늘은 조합으로 풀이를 하고 나중에 다이나믹으로 풀어보도록하겠습니다. 문제 해석 #1 조합 조합으로도 문제를 풀 수 있습니다. 하지만 조합으로 문제를 풀면 int형 범위를 넘어서기 때문에 BigInteger를 사용하였습니다. 코드 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969.. 2017. 11. 14.
[TopCoder] 고장난 로봇 오늘 배울 것은 DFS와 BFS에 관련된 문제입니다.알고리즘을 공부하다 보면 빠지지 않는 개념 중 하나입니다. 그렇기 때문에 무조건 알아야 할 것들입니다. 문제 고장난 로봇이 평면 위에 있습니다. 그리고 n 번 움직입니다. 로봇은 각 단계에서 한 방향(동, 서, 남, 북) 중에 한 방향을 랜덤하게선택해서 한 칸 움직입니다. 로봇이 동, 서, 남, 북을 선택할 확률은 north, south, east, west% 입니다.로봇이 임의로 이동하며 같은 지점을 통과하지 않으면 성공했다고 합니다.(참고로 로봇의 시작 지점은 항상 1번째 통과 지점이 됩니다.)로봇이 성공적으로 보행할 확률을 double 자료형으로 리턴해주세요. 풀이 입력 결과n = 1 1.0ease = 25west = 25south = 25nort.. 2017. 11. 12.
[TopCoder] 초급 - 암호 오늘도 간단한 문제입니다.전체 탐색을 이용한 문제이며 약간의 수학적 시직이 있으면 좀더 효과적인 코드를 작성할 수 있습니다. 문제 TopCoder Security Agency는 새로운 암호화 시스템을 개발했습니다. 이 시스템은 암호화하려고 숫자 리스트를 입력받습니다.여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부부을 구현하는 것이 여러분의 일이빈다. 여러분은 입력 리스트엣 1개의 값을 선택하고 값을 1 증가시킵니다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다.int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓갑을 리턴하세요. 리턴값이 2의 62승을 넘는 문제는 나오지 않을 것입니다. 해석 Test Case#1 입력 = 1, 2 ,3 / 출력 = 12Test.. 2017. 10. 25.
[TopCoder] 초급 - 전체 탐색 이전에 시뮬레이션은 간단하게 주어진 문제를 간단히 구현만 하면 되는 문제였습니다.이번에는 가장 좋은 결과를 얻는 것에 관한 문제입니다. 그 중 대표적인 것이 바로 전체 탐색입니다. 문제 화이트씨는 다재다능한 사람입니다. 그래서 그에게는 친구가 많습니다. 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다. 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화재가 있을 때 파티를 즐긴다는 것을 알았습니다.문자열 배열 first / second가 주어집니다. 화이트씨의 i번째 친구가 흥미있는 화제는 first.. 2017. 10. 24.
[TopCoder] 초급 - 시뮬레이션 오늘 초급부터 시작을 해보겠습니다. 초급 단계는 누가봐도 쉽다고 느낄 만큼 쉬운 문제입니다.일단 문제를 보겠습니다. 문제 타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라 이름을 붙인 N개의 병에 키위 주스를 넣습니다.이때 i 번째의 병의 용량은 capacities[i] 리터이며 타로가 i 번째 병에 넣은 키위 주스의 양을 bottle[i] 리터라고 합니다.지금 타로는 병에 키위 주스를 재분배하려고 하며, 0 부터 M-1까지 M 회 조작합니다. i 번째의 조작은 타로가 병 fromId[i] 부터 병 toId[i]에 키위 주스를 넣는 것을 의미합니다. 병 fromId[i] 가 비어 있거나 병 toId[i]가 꽉 차 있는 순간, 타로는 더 이상 키위 주스를 넣지 않습니다. M개의 요소를 가진.. 2017. 10. 24.