본문 바로가기

알고리즘90

[2023-06-17] [프로그래머스 lv2] 두 큐 합 같게 만들기 (Kotlin) 1시간 20분정도 걸렸습니다.. 반복문 탈출 조건을 찾느라 오래 걸렸고, 또한 총합을 Long으로 설정해주지 않아, 삽질을 많이 했습니다. package seventyFourth import java.io.* import java.util.* class `lv2 두 큐 합 같게 만들기` { class Solution { fun solution(queue1: IntArray, queue2: IntArray): Int { var answer: Int = 0 val totalSum = queue1.sum().toLong() + queue2.sum().toLong() val limit = queue1.size * 4 if (totalSum % 2 != 0L) return -1 else{ val queueOne .. 2023. 6. 17.
[2023-06-17] [프로그래머스 lv1] 숫자 문자열과 영단어 음.. 15분 걸렸습니다. 그냥 아스키코드로 바꾼 값이 57이 넘을 경우 글자를 하나씩 추가하여 확인하고, 바꿔주었습니다. 다른 분 풀이를 보니 다 replace 매소드를 쓰셨네요. 저도 써먹어 버릇해야 할 것 같아요. package seventyFourth class `lv1 숫자 문자열과 영단어` { class Solution { fun solution(s: String): Int { var answer: Int = 0 var an = "" val map = mutableMapOf() val arr = listOf("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine") for (index in arr.indices.. 2023. 6. 17.
[2023-06-17] [프로그래머스 lv1] 신고 결과 받기 (Kotlin) 와 lv2 보다 더 오래걸렸습니다. 저만 그런건지 모르겠는데, 더 어려웠던 것 같아요. 1시간 걸렸습니다. package seventyFourth class `lv1 신고 결과 받기` { class Solution { fun solution(id_list: Array, report: Array, k: Int): IntArray { // 각 id 별 신고한 id를 저장하는 2차원 배열 val reporterArr = Array(id_list.size){mutableSetOf()} // 각 id 별 배열의 위치를 저장 val idLocationMap = mutableMapOf() for (index in id_list.indices){ idLocationMap[id_list[index]] = index } .. 2023. 6. 17.
[2023-06-17] [프로그래머스 lv1] 성격 유형 검사하기 (Kotlin) 13분 정도 걸렸습니다. class Solution { fun solution(survey: Array, choices: IntArray): String { var answer: String = "" val arr = arrayOf(arrayOf('R','T'),arrayOf('C','F'),arrayOf('J','M'),arrayOf('A','N')) val map = mutableMapOf() for (index in choices.indices){ val choice = choices[index] val value = survey[index] when(choice){ 1 -> map[value.first()] = map.getOrDefault(value.first(), 0) + 3 2 -> map[.. 2023. 6. 17.
[2023-06-16] [프로그래머스 lv2] 이모티콘 할인행사 (Kotlin) 총 3분이 걸렸습니다. 할인하는 방식을 잘못해서,, 삽질하는데 시간을 많이 날렸습니다. class Solution { fun solution(users: Array, emoticons: IntArray): IntArray { // 각 할인의 따른 경우의 수를 저장할 배열 val pairAns = arrayListOf() // dfs를 통해 각 할인의 경우의 수를 선택 val discounts = arrayListOf(10, 20, 30, 40) val ans = Array(emoticons.size){0} fun dfs(num: Int){ if (num == emoticons.size){ // 조건에 따라 서비스 가입 수, 구매 비용을 구한 후 // Pair 객체 형태로 배열에 저장 var totalPr.. 2023. 6. 16.
[2023-06-16] [프로그래머스 lv2] 택배 배달과 수거하기 (Kotlin) 사실 어제 풀었었지만, 일이 생겨서 오늘 올리게 됩니다. 테스트 케이스 중 하나가 시간초과가 떴고, 이것을 해결하는데만 20분이 걸렸습니다. 총 1시간이 걸렸네요.. 문제 난이도에 비해 너무 오래 걸린 것 같아요. // 가장 멀리있는 집의 택배를 우선적으로 배달해야 합니다. // 배달한 후, 현재 들고있는 택배의 양은 0이 되며 // 이 때 배달한 집들 중 가장 멀리있는 집으로 부터 되돌아오며 // 택배를 수거합니다. class Solution { fun solution(cap: Int, n: Int, deliveries: IntArray, pickups: IntArray): Long { // 방문한 집들 중 가장 멀리있는 집의 위치를 저장 var maxDIdx = 0 var maxPIdx = 0 // .. 2023. 6. 16.
[2023-06-14] [프로그래머스 lv1] 개인정보 수집 유효기간 (Kotlin) 와 생각보다 오래 걸렸습니다. 이게 테스트 케이스는 모두 맞고, 실제 채점은 틀려버리니깐 더 헷갈리네요. package seventyFirst class `lv1 개인 정보 수집 기간` { class Solution { fun solution(today: String, terms: Array, privacies: Array): IntArray { // 오늘 날짜 val todaySplit = today.split('.') val todayYear = todaySplit[0].toInt() val todayMonth = todaySplit[1].toInt() val todayDay = todaySplit[2].toInt() // 답 저장 배열 val ans = arrayListOf() // map에 약관 .. 2023. 6. 14.
[2023-06-14] [프로그래머스 lv1] 카드 뭉치 (Kotlin) 배열 크기가 10보다 작다고 명시되어 있어, contains를 썼습니다. 각 prev값과의 차이가 1이 아닐 경우 tag를 false로 설정합니다. class Solution { fun solution(cards1: Array, cards2: Array, goal: Array): String { var prevOne = -1 var prevTwo = -1 var tag = true for (index in goal.indices){ if (cards1.contains(goal[index])){ val idx = cards1.indexOf(goal[index]) if (Math.abs(idx - prevOne) != 1){ tag = false break } prevOne = idx } if (cards2.. 2023. 6. 14.