본문 바로가기

코틀린40

[kotlin, 프로그래머스] 최소신장트리 문제와 입출력최소 신장 트리 (Minimum Spanning Tree, MST)의 정의와 특징정의최소 신장 트리는 가중치가 할당된 무방향 그래프에서 모든 정점을 포함하면서 간선의 가중치 합이 최소가 되는 트리입니다.특징트리의 간선 수: (V - 1)개의 간선을 가집니다.사이클 없음: 트리 구조이므로 사이클을 형성하지 않습니다.가중치 최소화: 모든 정점을 연결하면서 간선의 가중치 합이 최소가 되어야 합니다.사용 예통신 네트워크 구축: 노드들을 가장 적은 비용으로 연결할 때 사용됩니다.최소신장트리(MST) 구현 방법 - 크루스칼 알고리즘, 프림 알고리즘 사용 크루스칼간선을 가중치 순으로 정렬 후, 작은 것부터 선택 (사이클 방지)간선 정렬 + 유니온 파인드 (Union-Find)프림정점 기준으로, 현재 트리.. 2025. 4. 12.
[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] 프로세스 문제 설명운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다.3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.현재 실행 .. 2025. 1. 7.