SRM428 회문


존과 브루스는 대학에서 문자열 이론을 공부하고 있습니다. 브루스는 회문을 아주 좋아합니다. 

회문은 앞에부터 읽으나, 뒤에서부터 읽으나 같은 단어를 말합니다. 
존은 브루스를 임의의 문자열 s로 회문을 만들어 브루스를 깜짝 놀래켜주고 싶습니다. 
이때 존은 문자열 s뒤에 0개 이상의 숫자를 추가해 회문을 생성하려고 합니다. 
존이 생성할 수 있는 가장 짧은 회문의 길이를 리턴하세요 
제약 조건 : 매개변수 범위
s -> 영어 소문자 ('a'~'z') 로 구성된 1~50글자의 문자열입니다.

기존의 어떤 임의의 문자열이 있고 이것을 우리는 회문으로 만들기 원한다. 양 끝단을 검색해서 서로 다르다면 이것을 맞춰주기 위해 

뒤에 0개 이상의 문자를 계속적으로 추가해줘야 한다. 문자를 추가하여 생성할 수 있는 가장 짧은 회문 길이를 리턴해라.




'Programming > 알고리즘' 카테고리의 다른 글

SRM436 FriendScore  (0) 2018.06.04
SRM480 Cryptography  (0) 2018.06.04
SRM494 InterestingParty  (0) 2018.06.04


SRM480 암호


TopCoder Security Agency(TSA, 오늘 설립되었어요!)는 새로운 암호화 시스템을 개발했습니다. 

이 시스템은 암호화하려고 숫자 리스트를 입력받습니다.

여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부분을 구현하는 것이 여러분의 일입니다.

여러분은 입력 리스트에서 1개의 값을 선택하고 값을 1 증가시킵니다. 

이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다.

int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓값을 리턴하세요. 

제약조건 : 매개변수 범위

capacities -> 2~50개의 요소가 있는 배열이며 각 요소의 값은 1~1000입니다.

리턴값 -> 2^62를 넘지 않습니다.


입력 리스트에 들어있는 숫자 중 하나의 값을 선택하여 값을 1 증가시킨다. 선택한 값과 나머지 숫자들을 모두 곱했을 때 그 결과가 최댓값이 되는 수를 리턴할 것 



'Programming > 알고리즘' 카테고리의 다른 글

SRM436 FriendScore  (0) 2018.06.04
SRM428 ThePalindrome  (0) 2018.06.04
SRM494 InterestingParty  (0) 2018.06.04


SRM494 즐거운 파티


화이트씨는 다재다능한 사람입니다.(모든 것이 그의 관심 대상입니다.) 그래서 그에게는 친구가 많습니다.
하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 
각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다.
그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 
화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화제가 있을 때
파티를 즐긴다는 것을 알았습니다.
문자열 배열 first, second가 주어집니다. 화이트씨의 i 번째 친구가 흥미 있는 화제는 first[i]와 second[i]입니다. 
즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇 명인지 리턴하세요.
제약조건 : 매개변수 범위
first, second->  1~50개의 요소를 갖는 배열 (두 배열은 같은 크기이다.)
각 요소는 1~15개의 문자이며, 각 문자는 영어 소문자 입니다. 
i번째 요소 first[i]와 second[i]의 내용은 다릅니다.

파티에 서로 모르는 친구들을 초대할 계획이다. 이 친구들의 관심사가 겹친다면 서로 편하게 어울릴 수 있을 것이다.

즉 파티에 참가한 멤버 중에 동일한 관심사를 갖고 있는 다른 멤버가 최소 1명 이상이어야 하는 조건을 성립해야 한다.

파티 신청자 중 그들의 관심사 경향에 따라 최대로 초대 가능한 숫자를 리턴할 것 

친구 A의 관심 목록 1.(건강) 2.(취업) <- 이런식의 목록을 정한다. 
다음과 같은 배열을 만들고 이곳에서 랜덤으로 string 값을 추출해 해당 지원자의 관심사 목록에 할당할 것이다.
interestingArray = new string[]
        {
            "game",
            "study",
            "movie",
            "book",................
        };

지원자가 갖고 있는 관심사 정보를 구성하기 위해 다음과 같은 클래스를 만들었다.


1. 그다음 미리 정해놓은 지원자 숫자를 입력 

2. 입력된 지원자들에게 랜덤으로 관심사 목록을 할당한다.

3. 한 지원자가 가지고 있는 두 관심사 중 보다 더 매치 경향이 높음 정도를 찾는다.

4. 모든 지원자를 반복하여 여러 사람과 최대한 많이 매치하는 선호도의 높음 정도를 갱신한다.




'Programming > 알고리즘' 카테고리의 다른 글

SRM436 FriendScore  (0) 2018.06.04
SRM428 ThePalindrome  (0) 2018.06.04
SRM480 Cryptography  (0) 2018.06.04

+ Recent posts