본문 바로가기
♞ | 공부일지/♝ | TIL

[Android, 내일배움캠프] 공부일지(2024-05-14)

by immgga 2024. 5. 14.
오늘 공부한 내용 정리(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