[Algorithm/Kotlin] 백준 30804번 과일 탕후루: 투 포인터(슬라이딩 윈도우)로 최적화
문제 설명은하는 긴 막대에 N개의 과일이 꽂혀있는 과일 탕후루를 만들었습니다.과일의 종류는 1부터 9까지 있으며, 막대에는 앞쪽부터 차례대로 S1,S2,...,SN번 과일이 꽂혀 있습니다.그러나 주문을 다시 확인해 보니 과일을 두 종류 이하로 사용해야 한다는 요청이 있었습니다.새로 만들 시간이 없는 은하는 앞쪽에서 a개, 뒤쪽에서 b개의 과일을 빼서 두 종류 이하의 과일만 남기기로 했습니다.즉, 막대의 연속된 구간 중에서 과일 종류가 2개 이하인 가장 긴 부분을 찾아야 합니다.이때, 남아 있는 과일 개수가 가장 많은 경우를 구하는 것이 목표입니다.입력첫 줄에 과일의 개수 N이 주어집니다. (1≤N≤200,000)둘째 줄에 탕후루에 꽂힌 과일을 나타내는 NNN개의 정수 S1,S2,...,SN이 공백으로 ..
2025. 3. 17.
[Operating System & Concurrency] 프로세서, 프로세스, 스레드, 코루틴의 개념과 관계 정리
운영체제를 공부하면서 여러 번 관계성을 정리하려 했지만, 학습할 때마다 다시 헷갈리는 반복이 이어졌습니다. 흐름을 제대로 정리하고자 여러 유튜브 강의를 찾아보던 중, 유튜버 얄팍한 코딩사전님의 "프로세스는 뭐고 스레드는 뭔가요?" 영상을 보고 개념을 정리하는 데 많은 도움을 받았습니다. 이 글은 해당 영상에서 설명된 내용을 바탕으로 나중에 다시 참고하기 위해 정리한 글입니다.또한, 프로세서, 프로세스, 스레드의 관계를 이해한 후, 처음에는 스레드와 비슷하게 보였던 코루틴의 개념까지 정리하고 싶어 관련 블로그 글을 찾아 읽었습니다. 이 과정에서 발견한 글을 통해 스레드와 코루틴의 차이를 이해하는 데 큰 도움이 되었으며, 이를 바탕으로 최종적으로 본 글을 정리하게 되었습니다.혹시라도 이 글을 보게 된 분이라..
2025. 3. 6.
[Algorithm/Kotlin] 백준 2630번 색종이 만들기: 분할정복을 활용한 풀이법
1. 문제 설명주어진 N × N 크기의 색종이가 하얀색(0)과 파란색(1) 으로 칠해져 있을 때,이를 모두 같은 색이 될 때까지 잘라 각 색상의 개수를 구하는 문제입니다.문제 조건N은 2^k (k = 1~7) 형태로 주어집니다. (즉, 2, 4, 8, 16, 32, 64, 128 중 하나)색종이가 한 가지 색으로만 칠해져 있다면, 더 이상 자르지 않고 해당 색종이 개수를 증가시킵니다.혼합된 색상이 있다면, 정사각형을 4등분하여 동일한 방식으로 재귀적으로 처리합니다.예제 입력81 1 0 0 0 0 1 11 1 0 0 0 0 1 10 0 0 0 1 1 0 00 0 0 0 1 1 0 01 0 0 0 1 1 1 10 1 0 0 1 1 1 10 0 1 1 1 1 1 10 0 1 1 1 1 1 1예제 출력97 즉,..
2025. 3. 4.
[DataStructure/Kotlin] Kotlin에서 Array, List, MutableList, ArrayList의 차이 정리
Kotlin에서는 Array, List, MutableList, ArrayList 등 다양한 컬렉션 타입을 사용할 수 있습니다.이들은 모두 여러 개의 값을 저장하는 자료구조이지만, 동작 방식과 활용법이 서로 다릅니다.이번 글에서는 각 자료구조의 특징과 차이점, 그리고 언제 어떤 것을 사용해야 하는지 정리하겠습니다.1. Array vs List → 수정 가능 여부 차이Array는 값 변경 가능하지만 크기 변경은 불가능val arr = arrayOf(1, 2, 3)arr[0] = 10 // 값 변경 가능println(arr.joinToString()) // 10, 2, 3// arr.add(4) // 컴파일 오류 (크기 변경 불가능)Array는 배열 크기가 고정되어 있지만, 인덱스를 통해 값 변경이 가..
2025. 2. 13.