Code Signal -Arcade Kotlin
코드시그널 아케이드 코틀린 풀이
코드시그널 아케이드 Intro 자바 풀이가 끝나고 코틀린 풀이를 올리게 되었습니다.
질문과 틀린부분은 댓글로 남겨주세요. 🎅
글을 참고 하셨다면, 공감, 하트 한번 눌러주시고 가주시면 감사하겠습니다. 🧡💚💘
증가하는 수열을 나타내보라는 것이다.
단 조건이 있는데, 만약 한 개의 수가 그 시퀀스를 막는다면, 그 한 개의 수를 제거하는 조건으로
시퀀스가 유지되는지 확인하라는 알고리즘.
풀이.
//코틀린
fun almostIncreasingSequence(sequence: MutableList<Int>): Boolean {
var a = -1
var b = 0
for(i in 1 until sequence.size)
if(sequence[i-1] >= sequence[i]){
a = i
b++
}
if(b>1){
return false
}
if(b== 0){
return true
}
if(a == sequence.size -1 || a == 1){
return true
}
if(sequence[a-1] < sequence[a+1]){
return true
}
if(sequence[a-2] < sequence[a]){
return true
}
return false
}
단순하게 수열을 검사한다. b의 값을 통해서 이 수열이 시퀀스가 유지되는지 안되는지 확인하고 리턴값을 할당해주는 알고리즘이다.
if문을 통해서 진행하며 시간 복잡도가 적다.
//자바
boolean almostIncreasingSequence(int[] sequence){
// sequence 배열의 길이
int length = sequence.length;
System.out.println(length);
//공식에 필요한 변수선언 하나는 -1 하나는 0으로 지정.
int a = -1;
int b = 0;
for(int i = 1; i<length; i++)
//첫번째 요소가 다음 요소보다 크다.
//즉, 규칙적이게 커지는 수가 아니라는 뜻이다.
//그러면 a에 그 두번째요소 인덱스를 넣어준다.
//그리고 b는 이 가정문에 걸릴시 +1씩 더해준다.
if(sequence[i-1] >= sequence[i]){
a = i;
b++;
}
//만약 b가 1보다 커질경우에는 false를 바로 리턴한다.
//b가 1초과되는경우는 위의 첫번째 if문이 두번이상 반복되었다는 뜻.
//볼것도 없이 하나의 숫자를 빼도 순서대로 시퀀스를 못마춘다는 뜻이므로
//false를 리턴 시킨다.
if(b > 1){
System.out.println("one 앞에수가 큰경우나 같은경우 2번이상 나옴");
return false;
}
//만약 b가 0이라면 true를 바로 리턴해준다.
//첫번째 if문이 가동안되었다는 뜻이므로 앞의 수가 뒤에수보다 작다.
//그러므로 시퀀스가 유지되므로 true를 리턴해주는 것이다.
if(b == 0){
System.out.println("two 안건드려도 시퀀스 유지 잘됨.");
return true;
}
//한개의 수를 제거한다면 시퀀스가 성립된다.
if(a == length -1 || a == 1){
System.out.println("a= "+a);
System.out.println("three 한개의 수를 빼면 성립됨.");
return true;
}
if(sequence[a-1] < sequence[a+1]){
System.out.println("a= "+a);
System.out.println("four 양쪽 중하나 잘라내면 시퀀스 성립됨.");
return true;
}
if(sequence[a-2] < sequence[a]){
System.out.println("a= "+a);
System.out.println("five 공갈빵 하나 빼면 시퀀스 성립됨.");
return true;
}
System.out.println("a= "+a + " 이상한 경우");
return false;
}
728x90
반응형
'Algorithm > Kotlin' 카테고리의 다른 글
#08_CS Arcade Kotlin >> Matrix Elements Sum (0) | 2020.12.31 |
---|---|
#06_CS Arcade Kotlin >> Make Array Consecutive 2 (0) | 2020.12.29 |
#04_CS Arcade Kotlin >> Adjacent Elements Product (0) | 2020.12.23 |