[Python 문제풀이(CodeSignal) #4] 4번 문제

파이썬 문제풀이 / / 2020. 2. 20. 02:19

<이전글>

2020/02/03 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #3] 3번 문제

2020/01/18 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #2] 2번 문제

2020/01/13 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #1] 튜토리얼 & 1번 문제

2020/01/12 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #0] 회원가입

 

4번 문제

(많이...) 늦게 돌아왔지만 4번 문제입니다.

문제 배경이 바뀌었네요.

 

문제 설명

"정수의 배열을 고려하여 가장 큰 제품을 가진 인접 요소 쌍을 찾아 해당 제품을 반환하십시오." -by 파파고

 

 

/*

inputArray = [3, 6, -2, -5, 7, 3]의 경우 출력은
인접한 요소 제품(inputArray) = 21.
7과 3은 가장 큰 제품을 생산한다.

*/

 

문제와 예시를 보니 입력한 배열의 값에서 붙어있는 두 수의 곱 중에서

가장 큰 값을 반환하는 함수를 만드는 것 같네요.

 

 

또, 넣을 수 있는 요소들의 개수는 2개에서 10개,

각각의 요소들에는 -1000이상 1000이하의 값만 들어갈 수 있네요.

 

문제 풀이

그럼 바로 함수를 제작해 봅시다.

 

먼저 파이썬의 for 문을 사용하여 입력한 배열의 요소들을 하나씩 빼내어 곱하고

곱한 값이 크다면 sum에 저장하는 예시를 만들어 봅시다.

 

간단히 만든다면 아래처럼 되겠네요.

sum은 존재할 수 있는 최솟값이고

a는 for문으로 가져오는 n 값의 이전 값이 되어 계속해서 곱해주는 방식입니다.

 

이제 한번 실행해 봅시다.

 

실패한 예제가 있네요?

 

실패한 예제를 보니 배열의 요솟값 사이사이에 -값이 껴있어

-12가 최댓값이 되어야 하지만 저희가 a의 초깃값을 0으로 정하는 바람에

최댓값이 0이 되어버렸네요.

 

이를 위해 a를 아래처럼 초기화해 줍시다.

이렇게 초기화를 하는 이유는 a를  inputArray[0]으로 초기화를 해준다면

처음 비교할 때에 a는  inputArray[0]이 되고 n도 inputArray[0]이 되어 정상적으로 비교가 되지 않지만

 

a를  inputArray[1]으로 초기화를 해준다면

처음 비교할 때에 a가  inputArray[1]이 되고 n이 inputArray[0]이 되며

두 번째에도 처음 비교할 때의 n 값을 a가 가지게 되어 a = inputArray[0],

n이 inputArray[1]이 되어 정상적으로 비교가 됩니다.

 

혹, 이해 안 가시는 부분이 있거나 이상한 부분이 있다면 댓글란에 남겨주세요!

 

이제 다시 한번 실행해 봅시다.

예시들이 성공적으로 패스된 것을 확인할 수 있습니다.

 

 

이제 SUBMIT을 눌러 제출하면 끝입니다.

 

 

성공적으로 완수했습니다..!

다음번엔 5번 문제로 돌아오겠습니다.

 

 

 

dduckyee(떡이)의 티스토리

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기