728x90

Kotlin 27

kotlin 프로그래머스 lv2 기능개발

1. 의도 및 이유: 배포시 개발속도별로 모두 다르고, 뒤의 기능이 앞의 기능보다 먼저 개발될 수 있어서, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포되므로 새로운 배포배열 왼쪽요소의 값이 오른쪽 요소 값보다 크다면 오른쪽 요소의 값을 왼쪽요소의 값으로 바꿨다. 2. 코드 동작 로직: -먼저 작업진도 배열의 값들은 현재 진도 상태를 나타내고 우리가 구하기위한값은 나머지완성 배포일이 얼만큼 걸리는지 구해야하기 때문에 전체 100-progresses요소 를 뺀 새로운 배열을 만들어주었다. ex)newProgresses = [7, 70, 45] -그 후 배포일 배열을 새로 초기화하고 newProgresses의 요소를 작업속도 요소로 나눈값이 나누어떨어지지 않는다면 몫에 1을 더했다. -마지막..

kotlin 프로그래머스 lv2 행렬의 곱셈

해당 문제는 행렬의 곱셈을 반환하는 문제이다. 행렬A(a*b) 행렬B(c*d) 두 행렬을 곱하면 a*d 크기의 행렬이 완성된다. (a:행 b:열 c:행 d:열) 이때 b열과 c행의 크기가 같아야하며, 다르면 계산할수 없다. 문제에서는 arr1행렬과 arr2행렬이 주어진다. 나는 먼저 arr1행렬의 행과열을 구하면 arr2의 행과 열은 일단, arr2의 행은 arr1행렬의 열과 크기가 같다. 그래서 간단히 arr1의 행과 열 그리고 arr2의 열을 변수에 담기로 결정했다. 그리고 arr1의 열과 arr2의 행의 크기가 같지 않다면 예외처리를 했다. 마지막으로 새로운 행렬을 담기위한 배열을 초기화해줬다. 그 후 for문을 이용해서 result 배열을 채워줬다. 1. 의도 및 이유: 행렬 곱셈은 각 원소를 적..

kotlin 프로그래머스 lv2 멀리 뛰기

예를들어 n = 4 로 주어진다면, (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 이렇게 5가지 경우가 리턴된다. 1. 어떤 의도, 이유로 해당 기능을 구현했는지 주어진 문제에서 주어진 규칙에 따라 멀리뛰기를 할때, 마지막 위치에 도달하는 방법의 수를 계산을 하는것이 목적인데 다이나믹 프로그래밍을 활용하여 중복계산을 피하고 효율적으로 결과를 도출하려는 의도가 있습니다. 2. 해당 기능은 어떤 로직으로 코드가 작동하는지 dp 배열은 각 위치까지 도달하는 방법의 수를 저장하는 배열이다. dp[0]은 초기값으로 1로 설정되어있다. 이후, 반복문을 통해 각 위치에 도달하는 방법의 수를 동적으로 계산한다. 이중 반복문에서는 한 번에 1칸 또는 ..

코틀린 안드로이드 카카오 계정 로그인

안드로이드로 소셜로그인 기능을 구현해보고싶어서 여러 블로그를 찾아다니다 https://greedy0110.tistory.com/142 [OAuth] 카카오 로그인 안드로이드 kotlin, coroutine 구현 가이드, 플랫폼 설정 부터 coroutine utility 까지 도입 어떤 프로젝트를 해도 사용자 인증은 중요한 키워드다. 그리고 사용자의 쉬운 접근을 위해서는 소셜 로그인 지원은 거의 필수적이다. 이번에는 카카오 로그인에 대해서 a-to-z까지 따라만 greedy0110.tistory.com 해당 블로그를 통해서 간단한 로그인을 구현해보았고 성공하였다. 해당 블로그에 잘 설명되어있어서 금방 구현할 수 있었다. 하지만 나는 이메일 정보를 가져와서 파이어베이스에 저장하고 싶어서 검색하다가 https..

TIL/simpleapp 2024.02.27

room database 를 활용한 간단한 crud

안드로이드db는 한번도 다뤄본적이 없어서 유튜브 강좌에 firebase 강좌가 많아서 간단한 프로젝트들을 만들어보았는데 생각보다 제약사항이 많고 코드가 길어져서 강의중에 https://www.youtube.com/watch?v=1LSuezewC70&list=PLVsNizTWUw7GMJ_jrWYsvIUHRq_XfjPA2&index=42 이 강의를 보게 되었다. 하지만 설정을하다 에러가 나오게되어 https://velog.io/@mraz3068/GradleException-compileDebugJavaWithJavac-task-current-target-is-1.8-and-kaptGenerateStubsDebugKotlin-task-current-target-is-17 velog velog.io 해당 블로그..

TIL/simpleapp 2024.02.27

kotlin 프로그래머스 lv1 JadenCase 문자열 만들기

해당 문제를 맨처음 아래와 같이 코드를 작성하였다. class Solution { fun solution(s: String): String { val splitString = s.split(" ") val spList = splitString.toMutableList() //[3people, unFollowed, me] val result = StringBuilder() for (split in spList) { //split = 3people/ unFollowed/ me val newSplitList = split.toCharArray().toMutableList() //[ 3,p,e,o,p,l,e] // 조건에 따라 대소문자 변환 for (i in newSplitList.indices) { if (n..

kotlin 프로그래머스 lv1 2022 KAKAO BLIND RECRUITMENT신고 결과 받기

해당 문제는 각 유저는 한 번에 한 명의 유저를 신고할 수 있고, 신고 횟수에 제한이 없다고한다. 서로 다른 유저를 계속해서 신고하며, 한 유저를 여러번 신고하는건 가능하지만, 동일한 유저에 대한 신고 횟수는 1회로 처리된다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송한다. 입출력 예시를 보면 아래와 같다. id_list의 원소는 이용자의 id를 나타내는 문자열이며 알파벳 소문자로만 이루어져 있다. id_list에는 같은 아이디가 중복해서 들어있지 않다. report의 원소는 "이용자id 신고한id" 형태의 문자열이다. 예를들어 "muzi frodo"인 경우 "muzi"가 "frodo"를 신고했다는 의미이다. 자기 자신을 신고하는 경우는 ..

kotlin 프로그래머스 lv1 공원 산책

문제에서 park의 배열이 이런식으로 나타나져있어서 직접 공책에 그림을 그려서 생각해 보았다. 얼추 문제의 그림과 유사한것 같았다. 문제에서 이런 제약사항이 있는데 나는 이 제한 사항을 park를 행과 열을 가진 직사각형으로 보고 만약 공원을 벗어나는지의 유무는 park의 행이나 열을 벗어날때로 생각했고, 장애물은 park의 요소중 'X'를 의미하므로 위 2가지중 하나만 만나게되더라도 명령을 중단하고 그다음 명령을 수행하면 되었다. 그래서 가장 먼저 S(시작점)을 찾고 명령을 수행하도록 코드를 아래와 같이 작성했다. class Solution { fun solution(park: Array, routes: Array): IntArray { val answer = IntArray(2) // 'S' 위치 찾..

kotlin 프로그래머스 lv1 2023 KAKAO BLIND RECRUITMENT개인정보 수집 유효기간

카카오 문제는 항상 잘 풀지 못해서 걱정했는데 오래걸렸지만 풀었다! 처음에는 class Solution { fun solution(today: String, terms: Array, privacies: Array): IntArray { val termsMap = mutableMapOf() for (term in terms) { val (type, validityPeriod) = term.split(" ") termsMap[type] = validityPeriod.toInt() } val formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd") val todayDate = LocalDate.parse(today, formatter) val personalInforma..

kotlin 프로그래머스 lv1 바탕화면 정리

문제를 보고 #과 .이 리스트 안에 들어가 있어서 당황했다. 그래서 A4용지에 그리면서 이해했다. 정리를해보자면 i를 행 j를 열로 표현하고 시작점과 끝점을 사각형위의 점으로 생각해보았다. 직사각형의 세로방향 맨 위쪽에 #이 있다면 변수 lux에 행 i가 저장된다. #이 행 마지막에 있을때 직사각형 세로끝이 결정되고 변수 rdx에 행 i+1이 저장된다. #이 행들중 가장 왼쪽에 위치할때 luy가 결정되고 j 값이 luy에 저장된다. #이 행들중 가장 오른쪽에 위치할때 rdy가 결정되고 j+1값이 rdy에 저장된다. 그래서 코드를 짤때 wallpaper 배열에서 # 문자가 있는 부분을 감싸는 최소 크기의 사각형을 찾아내고, 이를 표현하는 네가지 좌표를 반환하도록 짰다. 1. 변수 초기화 lux rdx lu..

728x90