Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!
Make Array Consecutive
consecutive 연속의...
연속 배열을 만들어라? 문제를 해석해보면,
Ratiorg라는 사람이 각각 다른 사이즈의 조각상을 그의 생일 선물로 받았는데, 각 조각상들은 숫자로 된 사이즈를 가지고 있다.
그래서 그는 그 조각상들을 크기가 작은것부터 큰 순서대로 (오름차순) 정렬해두려 한다.
12345 or 345 or 456 or 23456 이런식으로 말이다.
그래서 현재 가지고 있는 조각상 크기 배열이 있다면 어떠한 크기번호를 가진 조각상이 필요하고,
그 필요한 조각상의 갯수가 몇개 인지 구하는 것이다.
블라블라..
배열을 순서대로 봤을 때, 비어있는 숫자가 몇 개인지 알아내라는 것이다.
즉,
[ 4, 9, 2, 8, 6] 이라고 한다면,
순서대로 하면, [ 2, 4, 6, 8, 9 ] 이다. 여기서 비어있는 사이즈는,
3, 5, 7 사이즈이다.
그러면 총 필요한 조각상의 갯수는 3개가 된다는 것이다.
어려운데?? easy 수준이라닝..
문과생은 웁니다.
일단 생각을 해보면,,, 입력된 배열을 순서대로 나열해줘야하는 것인가?
그리고 비어있는 수를 확인해줘야하는데, 앞에 수와 뒤에 수를 빼서 -1 을 해주면 없는 수의 갯수는 나타낼 수 있다.
먼저, 배열을 오름차순으로 나열하기 위해서는 Arrays.sort()가 필요하다.
sort는 이 블로그에서 잘 설명해주고 있다.
블로그도 참고해서 구글링하고 해서 miss 를 없는 사이즈의 갯수를 나타내는 객체로 하기로 했다.
그리고 오름차순으로 정렬된 배열을 For문에 돌려서, 없는 사이즈의 갯수를 구하면 된다.
int makeArrayConsecutive2(int[] statues) {
// 없는 수를 갯수를 나타내는 객체 선언
int miss = 0;
// arrays.sort 를 이용해서 배열을 오름차순으로 나열.
Arrays.sort(statues);
//for반복문을 이용해서, 각 배열의 순서대로 비교해가면서 없는 수의 갯수를
// 쌓아가면서 반복한다. 그 한계치는 주어진 배열길이보다 하나작은 것만큼 분석
for(int i = 0; i < statues.length-1; i++){
miss += statues[i+1] - statues[i] -1 ;
}
return miss;
}
코드를 보면, miss += statues[i+1] - statues[i] -1 ; 이 부분에서 의미하는 것은 각 배열속의 값들을 앞수와 뒷수를 비교해서 빼주고 거기에 -1 을 하면 없는 사이즈 수의 갯수가 나타나진다. 자세히 어떤 사이지인지는 나오진 않는다.
코드의 느낌을 봤을때, 기본적으로 배열의 값들끼리 비교해서 비어있는 배열을 찾아주는 느낌이었다.
간단한 개념으로 4 와 7 사이에는 5와 6이 있다. 즉, 7-4 를 하면 3 . 거기에 -1 을 해주면 2가 된다.
여기서 2는 5와 6을 나타내는 갯수이다.
수학식으로는 간단한 개념이지만 코드로 풀어나가려면 배열을 이해하고 오름차순까지 따로 명령을 해줘야 하므로
좋은 공부가 된거 같다.
나중엔 이것을 활용해서 다양한 코드가 될거같은 약간 베이스같은 느낌이 강하다.
위에 알려준 블로그에는 내림차순의 방법까지 알려주고 있다.
답지는 항상 같은 곳에 있다.
https://github.com/greenhelix/CodeFights-Arcade/blob/master/Intro/Edge%20of%20the%20Ocean/Make%20Array%20Consecutive%202/code.java
'Algorithm > Java' 카테고리의 다른 글
#07_Code Signal Arcade >> Almost Increasing Sequence (2) | 2019.10.02 |
---|---|
#05_Code Signal Arcade >> Shape Area (0) | 2019.09.29 |
#04_Code Signal Arcade >> Adjacent Elements Product (0) | 2019.09.29 |