Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!
Adjacent Element Product
처음엔 이게 뭔가했다. 영어단어로는 Adjacent = 인접의 란 뜻이고 나머지는 뭐 element 요소 ,,
product 제품??(이 아니라 곱하기였다. 미친...내 수듄)
아무튼 문제를 보니, array속에서의 인접한 요소와 비교를 하여 어떠한 조건으로 결과값을 리턴하라는 문제인듯했다.
(약간 눈치껏 풀기로함)
그래서 구글링해서 찾아보려했는데 생각보다 한국말로 뭐라할지 모르겠어서 영어로 쳤다.
검색 결과가 나오질 않아서, 일단 부랴부랴 찾은것은 조금 비슷한 개념의 최근접이웃 알고리즘 같아서 링크를 눌러서 확인해보세요.
저도 잘 모르겠네요. ㅋㅋ 아무튼 문제 내용
주어진 숫자 배열에서, 최근접한 요소들의 쌍을 찾아서, 가장 큰 값인 쌍을 곱한값을 리턴하라?
조건은 입력값의 길이 는 2이상 10이하의 범위로 설정한다.
나머지 조건은 별상관없지요..
아무튼 예시를 봐도 , inputAraay = [ 3, 6, -2, -5, 7, 3] 이고, 여기서 adjacentelementproduct(inputArray) = 21
즉, 7 * 3 이 제일 크다는 것이다.
처음엔 무슨 말인가 싶었다. 이렇게 간단한 것 조차 혼자하려하니 골똘히 보게 되었다.
설명하자면
3, 6 | 6, -2 | -2, -5 | -5, 7 | 7, 3 |
이런식으로 배열의 인접한 요소들을 쌍으로 묶으면, 이렇게 5쌍이 나온다.
이 쌍들을 다 곱해보면 ,, 18 | -12 | 10 | -35 | 21 | 이러한 결과가 나온다. 그래서 정답이 21 인 것이다.
이제 코드를 보면, 더욱더 자세히 알 수 있다.
int adjacentElementsProduct(int[] inputArray) {
int max = inputArray[0]*inputArray[1];
for(int i=2; i<inputArray.length; i++){
if(max < inputArray[i-1]*inputArray[i])
max = inputArray[i-1]*inputArray[i];
}
return max;
}
입력값은 숫자배열로 된다. 그렇게 값을 받으면 딱 봐도 반복문으로 돌린 후 리턴 해주면 되겠지만,
조건중에 배열의 0 번째요소와 1 번째 요소는 해당이 안되므로 그 한 쌍을 먼저 max 라는 객체에 넣어준다.
즉, 이 max를 통해서 나머지 값을 비교해주고, 더 크면 max 값을 변경해주는 조건식을 for 반복문에 추가해준다.
생각해보니 굉장히 간단한 코드였다. 만약 최소값을 리턴하려면?
int adjacentElementsProduct(int [] inputArray) {
int min = inputArray[0] * inputArray[1];
for(int i =2; i < inputArray.length; i++)j
if( min > inputArray[i-1] * inputArray[i])
min = inputArray[i-1] * inputArray[i];
return min;
}
당연히 <> 방향만 바꿔주면 되는 듯 ㅋ
아무튼 이렇게 순조롭게 다음문제로 가야겠다.
https://github.com/greenhelix/CodeFights-Arcade/blob/master/Intro/Edge%20of%20the%20Ocean/adjacentElementsProduct/code.java
'Algorithm > Java' 카테고리의 다른 글
#05_Code Signal Arcade >> Shape Area (0) | 2019.09.29 |
---|---|
#03_Code Signal Arcade >> Check Palindrome (0) | 2019.09.29 |
#01#02_Code Signal Arcade >> ADD & Century From Year (0) | 2019.09.28 |