2024. 1. 19. 20:14ㆍTIL
정오까지 TodoApp을 마무리해서 제출하고 나머지 강의들을 들으면서 공부했다.
이후에는 평소에 하지 못했던 코드카타도 진행해봤다.
25. 나누어 떨어지는 숫자 배열
-
나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.
입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.
입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.
생각해보기
일단 반복문 while과 for 중에서 조건을 더 세세하게 적을수 있는 for 문을 이용하는것이 좋아보인다.
이번엔 처음으로 forEach 문을 써볼건데 내가 이해하기로는 배열안에 있는 it 전부에 적용될 코드를 짤수 있는것처럼 보인다.
그러니까 for (it in 1..배열이름.size) { 짤 코드~~ } 를 forEach { 짤 코드~~ } 로 간단하게 표현할수 있는듯 하다.
답안 코드
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = intArrayOf()
arr.forEach { //forEach 문법
if (it % divisor == 0) { //배열안의 숫자가 나머지가 0이면
answer += it //answer 배열에 더한다
}
}
answer.sort() //기본값 asc 으로 정렬한다
if (answer.isEmpty()) { //answer 배열이 비어있으면
answer += -1 //-1을 추가해준다
}
return answer
}
}
26. 음양 더하기
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예absolutessignsresult
[4,7,12] | [true,false,true] | 9 |
[1,2,3] | [false,false,true] | 0 |
입출력 예 설명
입출력 예 #1
- signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
- 따라서 세 수의 합인 9를 return 해야 합니다.
입출력 예 #2
- signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
- 따라서 세 수의 합인 0을 return 해야 합니다.
생각해보기
sign 배열의 i와 absolutes의 i들을 서로 연결시켜서 false 1이면 -1 true 3이면 +3 하는 식으로 결과값을 도출해내면 되는듯하다.
답안코드
class Solution {
fun solution(absolutes: IntArray, signs: BooleanArray): Int {
var answer: Int = 0
for (i in 0 until absolutes.size) { //일단 여기까지는 문제없이 했다.
if (signs[i] === true) { //여기서 오류가 많이 생겼다.
answer += absolutes[i] //이유는 ===가 ==로 되어 있어서
} //아마 i가 String이 아닌 true false 여서 그런듯 싶다.
else { // 결국 바꿔주고 코드완성
answer -= absolutes[i]
}
}
return answer
}
}
오늘의 한마디 : 코드카타를 하다가 내가 생각했던 대로 코드가 완성이 되면 기분이 좋다.
'TIL' 카테고리의 다른 글
20240123 (화) BackOffice 프로젝트 기능구현 (1) | 2024.01.23 |
---|---|
20240122 (월) BackOffice 프로젝트 (0) | 2024.01.22 |
20240118 (목) TodoApp 개발 마무리 및 추가 공부 (0) | 2024.01.18 |
20240117 (수) TodoApp 인증/인가 기반 완료 (1) | 2024.01.17 |
20240116 (화) 코틀린 + 스프링 심화과정 개인공부(화~금) (0) | 2024.01.16 |