728x90
1. 의도 및 이유: 배포시 개발속도별로 모두 다르고, 뒤의 기능이 앞의 기능보다 먼저 개발될 수 있어서, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포되므로 새로운 배포배열 왼쪽요소의 값이 오른쪽 요소 값보다 크다면 오른쪽 요소의 값을 왼쪽요소의 값으로 바꿨다. 2. 코드 동작 로직: -먼저 작업진도 배열의 값들은 현재 진도 상태를 나타내고 우리가 구하기위한값은 나머지완성 배포일이 얼만큼 걸리는지 구해야하기 때문에 전체 100-progresses요소 를 뺀 새로운 배열을 만들어주었다. ex)newProgresses = [7, 70, 45] -그 후 배포일 배열을 새로 초기화하고 newProgresses의 요소를 작업속도 요소로 나눈값이 나누어떨어지지 않는다면 몫에 1을 더했다. -마지막으로, distriDate배열의 왼쪽요소와 오른쪽 요소를 비교해서 왼쪽은 먼저 배포되어야하는 일에 해당하는 요소여서 왼쪽을 기준으로 오른쪽의 배포일을 맞췄다. 그 후 업데이트된 distriDate를 groupingBy함수를 사용해서 각각의 요소를 키값으로 만들고 갯수를 value로 만들어서 새로운 ㅡ맵변수 resultMap에 담아두었다. 3. 버그 또는 에러 및 해결: 왼쪽요소와 오른쪽 요소를 비교 후 새로운 맵을 만들때 값이 원하는값이 안나와서 디버깅을 했고, 인덱스 범위를 잘못 설정해서 다시 수정후 잘 해결되었다. |
해당 문제는 아래와 같이 코드를 작성하였다.
해당 문제를 풀때 groupBy와 groupingBy가 헷갈려서 다시 문법을 검색해서 풀게되었고, 예상되로 잘 풀렸다.
다시 문법을 되짚어보면 groupBy는 예를들어
val names = listOf("철수","영희","맹구","짱구", "훈")
val chingu = names.groupBy{it.length}
println( chingu ) // {2=[철수, 영희, 맹구, 짱구] ,1= [훈]}
이렇게 groupBy안에있는 값이 키값이 되고 해당 키에 포함되는 값이 키값의 value가 된다.
나는 groupingBy로 문제를 해결하였고,
groupingBy는 배열의 요소별로 키값을 만들고 그 키가 몇개인지가 value가 된다.
728x90
'TIL > kotlin 알고리즘' 카테고리의 다른 글
kotlin 프로그래머스 lv2 피로도 (0) | 2024.03.14 |
---|---|
kotlin 프로그래머스 lv2 프로세스 (0) | 2024.03.14 |
kotlin 프로그래머스 lv2 할인 행사 (0) | 2024.03.12 |
kotlin 프로그래머스 lv2 행렬의 곱셈 (0) | 2024.03.12 |
kotlin 프로그래머스 lv2 n^2 배열 자르기 (0) | 2024.03.11 |