Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!
Array Change
배열을 바꾸라잉
문제를 볼까요.
이게 Easy 맞나 싶었다. 뭔말인지 몰르겠었어서..
하지만 풀었기에,, 설명해드리겠습니디ㅏ...
주어진 숫자 배열이 있다. 이 배열의 증가하는! 배열로 만들어라!!
즉 이말은 시퀀스를 유지시켜라는 것입니다. 연속되는 수로 흐름을 설정해달라는 것이죠.
힌트는 이겁니다. 인접한 수와 비교했을때, 인덱스가 더 큰 요소의 값이 크다면 패스.. 그렇지 않으면, 다시 재설정하여
시퀀스를 유지시켜주고.. 패스..
이런식으로 모든 요소들을 비교해가면서 배열의 구성을 바꾸는 겁니다.
긴말 필요없이... 답을 봅시당.
간단하쥬?
그렇지만 극혐입니다.
일단 Change를 변수선언해줍니다. 이것이 변화량을 체크하는 변수에요.
정답은 시퀀스를 맞춰가는데, 얼마나 많은 변화가 필요한지 그 총합을 구하는 것이니깐요.
이렇게 해두고, for반복문을 통해서 각 요소들의 값을 조건을 통해 검사해줍니다.
( 뭔가 앨리트들은 쩌는 코드로 할거 같은 불안감이...)
일단 해보죠.
제 생각에는 순서대로 하나씩 앞에 요소와 뒤 요소를 비교해가면서 진행해야 할거 같았습니다.
조건은 if(inputArray[i] >= inputArray[i+1] ) 로 하겠습니다.
이말은 뒤에 요소가 앞에 요소보다 작은가? 그렇다면.. 이런 말이죠..
이렇게 해두고,
change += inputArray[i] +1 - inputArray[i+1];
inputArray[i+1] = inputArray[i] +1;
이 코드를 넣어두었습니다.
뒤에 수가 앞에수보다 작으면 시퀀스가 유지 안되는 것이니.. 그 것을 바로 갑아주면서
그 변화량을 저장해두어야 합니다. (계속 반복해서말이지요..)
먼저 변화량을 넣기 위해, 앞에 요소에 +1만 해두고 뒤에수를 빼버립니다. 이렇게 하면
앞에수보다 +1 큰 수로 뒤에 요소가 시퀀스가 형성이 되고, 그 변화량은 어차피 지금 뒤에수에서 앞에수를 까지 만들고 +1만 해주는 것이기 때문에 합리적인? 변화량이 산출됩니다.
이말은 즉, 5와 2가 이렇게 되어있다하면,
5 6 되어야 시퀀스가 유지 되는 것입니다. 그렇기 때문에 2 는 +4를 해서 6이 되어줘야하는데, 매번 반복을 해야하기 때문에 단순히 쉽게 표현이 힘들죠.
그렇다면 5를 기준으로 +1 을 해주면 6이 나옵니다. 여기다가 2를 빼버리면 4가 나오죠 공식이 되었습니다.
(뭔가 수학시간에 했던 기억이....) 아무튼
이렇게 해서 변화량을 구하는 공식이 생겼고,
이 변화량을 그냥 냅두면 안되죠 . 차곡 차곡 쌓아야 하기 때문에 ,
+= 을 통해서 축적해줍니다.
자 변화량을 담았으니, 그냥 끝나느게 아니라, 그 바뀐수를 그대로 뒤에수에 넣어주고 다음 쌍으로 검사가 되게 만들어야 합니다.
간단하게 앞에 수에 +1 만해서 뒤에서 넣어줍시다. (귀찮)
자 이렇게 하면 끝.
Change를 반환시킵니다.
끝.
궁금하신 아웃풋 출력 이 하고싶다면,
System.out.println(Arrays.toString(inputArray));
를 넣어주시고 테스트 해보세요 좀더 이해가 되실 겁니다.
테스틀 보시면,,
이렇습니다. 점점 극혐으로 치다는 테스트 ..
뭔 저런 인풋이 다있다냐.. 아무튼 hidden test 는 더 극혐입니다.
아무튼 이렇게 하면 답은 됩니다만, 출력 부분을 넣으시면 오류가 납니다. 그럴시엔 그냥 출력부분 주석걸고 제출하시면 됩니다 . ^^ (이유는 테스트중 극혐인 녀석이 아예 범위를 넘어서 버렸기 때문에 오류가 납니다. 그냥 못본척...ㅋ ) 물론 해결은 가능한 부분이라 굳이... 안했습니다.
자.. 이제 앨리트들의 답안을 살짝 볼까요?
휴 다행히도 별차이 없습니다.
자 그럼 여기까지..
'Algorithm > Java' 카테고리의 다른 글
#18_Code Signal Arcade >> Palindrome Rearranging (0) | 2019.11.20 |
---|---|
#16_Code Signal Arcade >> Are Similar? (0) | 2019.11.18 |
#15_Code Signal Arcade >> Add Border (0) | 2019.11.16 |