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

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

by immgga 2024. 5. 17.
오늘 공부한 내용 정리(2024년 5월 17일)

 

 

1. 코드카타 문제풀이

A. 2016년

문제 내용

 

문제 풀이 방법

  • a가 월이고 b가 일일 때, 2016년 해당 날짜가 무슨 요일인지 출력
  • 출력 형식은 각 날짜의 앞에서 3 단어(SATURDAY -> SAT)

 

해결 코드(스포 주의)

더보기
fun solution(a: Int, b: Int): String {
    val date = LocalDate.of(2016, a, b)
    return date.dayOfWeek.name.substring(0, 3)
}

 

풀이 과정

  • 날짜 데이터에 LocalDate()를 이용해 정확한 날짜 정보를 생성해 줌.
  • LocalDate().dayOfWeek.name을 하게 되면 해당 날짜에 요일을 알 수 있는데, 풀네임으로 나오기 때문에 subString()으로 3자리까지만 뽑을 수 있도록 설정.

 

B. 부족한 금액 계산하기

문제 내용

 

문제 풀이 방법

  • 놀이기구 이용료 price원이 계속 놀이기구를 이용할수록 이용료가 배로 증가함.
  • 놀이기구를 count번 이용했을 때, 자신이 가진 money에서 얼마가 부족하게 되는지 return.
    돈이 부족하지 않으면 0을 return.

 

해결 코드(스포 주의)

더보기
fun solution(price: Int, money: Int, count: Int): Long {
    var answer: Long = 0
    var totalMoney: Long = 0
    repeat(count) {
        totalMoney += price * (it+1)
    }

    answer = money.toLong() - totalMoney
    // answer(남은 돈)이 0원 미만일 때: 돈이 모자름.
    return if (answer < 0) answer * -1L
    else 0L
}

 

풀이 과정

  • return type이 long임. int 자료형으로 하면 크기 초과가 발생하는 경우가 테스트 케이스에 있을 가능성이 높음.
  • count만큼 repeat()으로 반복해서 totalMoney(놀이기구 이용에 필요한 총금액)에 price * 이용 횟수만큼 더해줌.
  • answer(long 타입)에 money와 totalMoney를 빼줌
  • answer가 음수라면(돈이 모자람) answer에 -1을 곱해 양수로 만들어서 return. 아니면 0을 return.
    -1에 L을 붙여서 Long타입으로 만들어서 곱해주어야 함. 안 그러면 int로 인식해서 int 범위 초과로 채점할 때 일부 테스트 케이스에서 실패할 가능성이 높음.

 

2. 스파르타 코딩 클럽 강의 수강

A. MBTI 테스트 앱 만들기(결과화면. 3-4)

강의 내용 간단 정리

  • intent를 할 때, putExtra()를 이용해 특정 타입의 데이터를 다음 화면에서 사용할 수 있도록 하는 코드 작성
  • resource.getIdentifire()으로 동적으로 특정 drawable의 icon을 불러옴.

 

간단 정리

  • 프로그래머스 문제 풀이 중.
  • 토이 프로젝트를 하기에는 이제 시간이 얼마 남지 않아서 프로그래머스 문제 푸는 데 시간을 더 쏟을 생각이다.
728x90

댓글