TIL 20240609 코딩 테스트(9)

2024. 6. 9. 15:26코딩테스트

꾸준함이 살길이다,,, 응,,,

그래도 계속 블로그에 뭔가를 남길 수 있는게 오히려 더 좋은 것 같다,,

다시 또 보고 공부하고 또 풀고 공부하고,, 무한 반복이다~ 이거ㅏ야~


// 카운트 업
class Solution {
    fun solution(start_num: Int, end_num: Int) = (start_num..end_num step 1).toList()
}

 

start_num 부터 1씩 올려서 end_num까지 리스트화 하는 문제였다!! step를 사용해서 해주었고! toList로 리스트화 시켜주었다.. ㅎㅎ

 

 


// flag에 따라 다른 값 반환하기
class Solution {
    fun solution(a: Int, b: Int, flag: Boolean): Int {
        var answer: Int = 0
        if(flag) answer += a + b else answer += a - b
        return answer
    }
}

 

flag의 데이터타입이 boolean으로 만약에 true 일 경우 a + b, false 일 경우 a - b 의 값이 들어가는 문제였다!!

이는 별 문제 없이 편안하게 풀 수 있었다.. 단순히 if 절과 boolean 타입에 대해서 알고 있으면 문제 없다!

 

 


// 카운트 다운
class Solution {
    fun solution(start: Int, end: Int) = (end..start step 1).toList().sortedDescending()
}

 

이건 위와는 반대로 아래로 떨어지는 것이다! 사실 이때 처음알았다,, step은 올리기만 하는거고 마이너스를 이용해서 아래로 다운시킬 수 없다는 것을,, ㅠ

 

그래서 우선 step으로 1씩 증가시키고 toList 한 다음에,, 정렬을 내림차순으로 하도록 하는 함수를 찾아서 적용시켜주었다.

그게 바로 sortDescending() / sortedDescending() 이었다.

 

또는 downTo를 사용해서 sortedDescending() 없이 할 수도 있었다.

 

class Solution {
    fun solution(start: Int, end: Int): IntArray = (start downTo end).toList().toIntArray()
}

 

 


// 수 조작하기
class Solution {
    fun solution(n: Int, control: String): Int {
        var answer: Int = n
        for (i in control.indices){
            when(control[i]) {
                'w' -> answer += 1
                's' -> answer -= 1
                'd' -> answer += 10
                else -> answer -= 10
            }
        }
        return answer
    }
}

 

 

 

이러한 조건에 맞춰서 when절로 각자 맞게 작성해주었다!!! 

해당 관련된 문자열에 무엇이 나왔는지에 따라서 연산을 해주는 거여서,,

조금은 까다로웠던 문제였다! 

 

 


// 공배수
class Solution {
    fun solution(number: Int, n: Int, m: Int): Int = if( number % n == 0 && number % m == 0) 1 else 0
}

 

n과 m의 공배수라서 각각 number에 나머지 연산자를 했을 때 0이 나오는 식이 동시에 이루어진다면 1을 아니라면 0을 리턴하는 문제였다!! 이건 그간 풀었던 문제와 크게 다르지 않아서 어렵지 않게 풀 수 있었다!!

 


// 가까운 1 찾기
class Solution {
    fun solution(arr: IntArray, idx: Int): Int {
        var answer: Int = 0
        for (i in arr.indices){
            if (i >= idx && arr[i] == 1){
                answer = i
                break
            } else {
                answer = -1
            }
        }
        return answer
    }
}

 

정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다. 정수 idx가 주어졌을 때, idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성하고 만약 그러한 인덱스가 없다면 -1을 반환하는 문제였당!!

 

첨엔 진짜 무슨 말인지 몰라서 해맸지만,,,

주어진 idx보다 크면서 배열이 값이 1인 가장 작은 인덱스를 구하는거,,, 응,,

 

그래서 for문으로 돌려주고 그 안에 if 절을 작성해주었다... 검은 색으로 칠해져 있는 부분이 동시에 충족할 수 있도록 

&& 사용하여 해주었고,, 가장 작은 인덱스를 구하는 것이므로 더 이상 구하지 않도록 break를 해주었다!!

만약에 더 해야한다~ 그럼 continue 가 필요하다 ㅎㅎ

 

또한 그러한 인덱스가 없으면 -1을 반환해야하는데,,, 이건 else를 사용해서 작성해주었다!!

 

끝! 그치만 이것 또한 다시 한 번 풀어봐야겠다 싶당 ㅠ 이따 풀어봐야징,, ㅠㅠ

 

 

'코딩테스트' 카테고리의 다른 글

TIL 20240619 코딩 테스트(11)  (0) 2024.06.19
TIL 20240613 코딩 테스트(10)  (0) 2024.06.13
TIL 20240607 코딩 테스트(8)  (0) 2024.06.07
TIL 20240605 코딩테스트 (7)  (1) 2024.06.05
TIL 20240601 코딩테스트 (6)  (0) 2024.06.01