본문 바로가기
Project/Algorithm

[TopCoder] 초급 - 암호

by 도낙원 2017. 10. 25.
반응형

 오늘도 간단한 문제입니다.

전체 탐색을 이용한 문제이며 약간의 수학적 시직이 있으면 좀더 효과적인 코드를 작성할 수 있습니다.


  문제


TopCoder Security Agency는 새로운 암호화 시스템을 개발했습니다. 이 시스템은 암호화하려고 숫자 리스트를 입력받습니다.

여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부부을 구현하는 것이 여러분의 일이빈다. 여러분은 입력 리스트엣 1개의 값을 선택하고 값을 1 증가시킵니다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다.

int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓갑을 리턴하세요. 리턴값이 2의 62승을 넘는 문제는 나오지 않을 것입니다.



  해석


Test Case#1 입력 = 1, 2 ,3 / 출력 = 12

Test Case#2 입력 = 1, 3, 2, 1, 1, 3 / 출력 = 36


문제는 그렇게 어렵지 않습니다. 

입력 값 중에 하나를 선택하여 값을 1 증가시키고 나머지와 곱했을 때 가장 큰 값을 구하는 것입니다.

#1을 봤을 때 


1 선택 

2 X 2 X 3  

12 

2 선택 

1 X 3 X 3  

3 선택  

1 X 2 X 4 


이렇게 됩니다. 결국 제일 큰 값은 12가 됩니다.



  코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static long encrypt(int[] numbers) {
 
        long ans = 1;
        for (int i = 0; i < numbers.length; i++) {
 
            long n = 0;
            n = numbers[i] + 1;
 
            for (int j = 0; j < numbers.length; j++) {
 
                if (i == j)
                    continue;
 
                n = n * numbers[j];
            }
            ans = Math.max(ans, n);
        }
cs



저는 이렇게 작성을 했습니다. 책에는 수학적 지식을 이용하여 엄청 가단하게 작성을 해놨습니다. 

어느 정도의 수학적 지식을 가지고 있다면 코딩을 작성하는데도 많은 도움을 주는 것 같습니다.

지금 당장 수학을 공부할 필요는 없겠지만 시간나면 조금식 공부해두면 충분히 도움을 받을 수 있을 것 같습니다.


반응형
사업자 정보 표시
난길샵 | 박현숙 | 경상북도 성주군 월항면 수죽길 98길 | 사업자 등록번호 : 256-07-01668 | TEL : 010-9909-8420 | Mail : skr04@naver.com | 통신판매신고번호 : 제2020-경북성주-52호 | 사이버몰의 이용약관 바로가기

'Project > Algorithm' 카테고리의 다른 글

[백준 알고리즘] 1010 다리 놓기  (0) 2017.11.14
[TopCoder] 고장난 로봇  (1) 2017.11.12
[TopCoder] 초급 - 전체 탐색  (0) 2017.10.24
[TopCoder] 초급 - 시뮬레이션  (0) 2017.10.24
[TopCoder] 탑코더를 시작하며  (0) 2017.10.24

댓글