본문 바로가기

코딩테스트 준비(kotlin)/그리디 알고리즘5

[kotlin] 회의실 배정 문제 접근 방법회의를 끝나는 시간 기준으로 정렬겹치지 않는 회의만 선택그리디 알고리즘으로 최적의 결과 도출package com.chanhue.algorithm.백준.골드fun main() { // 회의의 개수를 입력받음 val n = readln().toInt() // 회의 정보를 저장할 리스트 (Pair: (시작시간, 종료시간)) val meetings = mutableListOf>() // 회의 정보 입력받기 repeat(n) { val (start, end) = readln().split(" ").map { it.toInt() } // Pair 생성자를 이용해 리스트에 추가 meetings.add(Pair(start, end)) .. 2025. 4. 3.
[kotlin, 프로그래머스] 조이스틱 조이스틱 코틀린 문제풀이문제 해결 코드 (kotlin) class Solution { fun solution(name: String): Int { val n = name.length // 이름의 길이를 저장 // 각 문자를 목표 알파벳으로 변경하는 데 필요한 조작 횟수 합산 val moveCost = name.map { char -> val up = char - 'A' // 'A'에서 목표 문자까지 위로 이동한 횟수 val down = 'Z' - char + 1 // 'Z'에서 역으로 이동한 횟수 minOf(up, down) // 최소 이동 횟수를 선택 }.sum() // 커서 .. 2025. 1. 15.
[kotlin 프로그래머스] 큰 수 만들기 (level 2) import java.util.Stackclass Solution{ fun solution(number: String, k: Int): String { var answer = "" var stack = Stack() var removeCount = k for (digit in number) { while (stack.isNotEmpty() && stack.last() 0) { stack.removeAt(stack.size - 1) // 스택의 마지막 숫자 제거 removeCount-- } stack.add(digit) // 현재 숫자를 .. 2025. 1. 8.
[프로그래머스] 체육복 (kotlin) 1. Set으로 풀이. class Solution { fun solution(n: Int, lost: IntArray, reserve: IntArray): Int { var answer = n // 여벌이 있으면서 도난당한 학생 제거 val lostSet = lost.toSet() - reserve.toSet() var reserveSet = reserve.toSet() - lost.toSet() // 체육복 빌려주기 for (i in lostSet.sorted()) { when { i - 1 in reserveSet -> reserveSet -= (i - 1) .. 2025. 1. 8.