오늘 공부한 내용 정리(2024년 5월 14일)
1. 코드카타 문제풀이
A. 푸드 파이트 대회
문제 내용
문제 풀이 방법
- 2명이 동일한 양의 음식을 먹어야 함(food에 7이 있을 때, 2명이 3개씩 먹을 수 있음).
- 먹어야 하는 횟수만큼 string으로 합쳐서 return(한 명은 순차적으로 먹고 다른 한 명은 역순으로 먹어야 하기 때문).
return: 순차적인 음식 배치 + 0 + 역순 음식 배치
해결 코드(스포 주의)
더보기
// 2명이 동일한 양의 음식을 먹어야 함(7이면 2명이 3개씩 먹고 1개는 버려짐).
// 먹어야 하는 횟수만큼 string으로 return하면 됨.
fun solution(food: IntArray): String {
var setFood = ""
food.forEachIndexed { foodNum, foodCount ->
// 한 사람이 먹어야 하는 음식의 양
val eat = foodCount / 2
// eat가 0이면(음식의 개수가 2개 미만) 음식을 나눌 수 없기에 continue
// 이 조건으로 0번째 index인 물의 양을 추가 코드 없이 넘어갈 수 있음.
if (eat == 0) {
// for문의 continue와 같은 뜻.
return@forEachIndexed
} else {
// 음식 배치 변수(setFood)에 food의 index(foodNum)만큼 추가
repeat(eat) {
setFood += foodNum
}
}
}
return setFood + "0" + setFood.reversed()
}
풀이 과정
- foodCount에서 2(먹어야 하는 사람 수)를 나누면 한 사람이 먹어야 하는 음식의 개수를 알 수 있음(eat 변수).
- eat = 0일 경우에는 음식의 개수를 나눌 수 없기에 continue.
0인 경우는 음식의 개수가 2개 미만인 경우밖에 없기 때문에 물의 개수이자 0번째 index 처리도 추가적인 코드 없이 수행 가능함. - forEachIndexed에서 continue는 다음과 같이 작성.
return@forEachIndexed
- eat가 0이 아니면 음식을 나눌 수 있다는 뜻이기 때문에 음식 배치 변수(setFood)에 food의 index(foodNum)만큼 정렬할 음식을 추가.
repeat: 정해진 횟수만큼 반복(예시에는 eat의 개수만큼 반복함.)
repeat(eat) {
setFood += foodNum
}
2. 스파르타 코딩 클럽 강의 수강
A. MBTI 테스트 앱 만들기(메인화면, 3 - 1)
강의 내용 간단 정리
- mbti 앱 메인 화면 구성
- 그라데이션을 이용해 자연스러운 색 전환이 이루어지는 배경 제작.
B. MBTI 테스트 앱 만들기(질문지 화면 UI, 3 - 2)
강의 내용 간단 정리
- mbti 앱 질문지 화면 구성
- viewpager2를 이용한 화면 이동에 대해 공부.
3. 개인 공부
A. Planner 앱 출시.
공부 내용 간단 정리
- 개인정보처리방침 생성 정책 변경으로 처리방침 생성 불가함.
간단 정리
- reversed() 함수는 전에 푼 문제에도 써야 했던 함수인데, 오늘 푼 문제에서도 사용했으니 쓰임새를 정확히 외워야 할 것 같다.
- 강의에서 mbti 앱을 만들고 있다. 이전에 만든 bmi 생성기보다 훨씬 어려운 개념들이 들어가는 것 같다(라이브러리 사용).
- 앱을 출시하기 위해 준비 중이지만 출시에 필수적인 개인정보처리방침을 생성할 수 있는 사이트가 현재 법안이 개정되어 사이트 사용이 막힌 상태이다.
728x90
'♞ | 공부일지 > ♝ | TIL' 카테고리의 다른 글
[Android, 내일배움캠프] 공부일지(2024-05-16) (0) | 2024.05.16 |
---|---|
[Android, 내일배움캠프] 공부일지(2024-05-15) (0) | 2024.05.15 |
[Android, 내일배움캠프] 공부일지(2024-05-13) (0) | 2024.05.13 |
[Android, 내일배움캠프] 공부일지(2024-05-12) (0) | 2024.05.12 |
[Android, 내일배움캠프] 공부일지(2024-05-11) (0) | 2024.05.11 |