25915번: 연세여 사랑한다
백준/문제2024. 5. 16. 00:4825915번: 연세여 사랑한다

문제 출처 : https://www.acmicpc.net/problem/25915 언어 : Kotlin 문제 설명 :여러분은 연세를 사랑하십니까?연세인이 가장 사랑하는 응원곡,사랑한다 연세여, 연세여 사랑한다... 고려대학교 학생 훈규는 2022 정기 연고전에서 열심히 응원을 하다가 정신을 잃고 깨어나 보니 연세대학교의 감옥에 갇혀 있었다. 훈규가 감옥을 탈출하기 위해서는 바닥에 깔린 비밀번호 석판을 이용해서 비밀번호 "ILOVEYONSEI"를 입력해야 한다. 비밀번호 석판은 총 26가지의 석판이 일렬로 나열되어 있고, 각각 알파벳 대문자가 왼쪽부터 알파벳 순서대로 적혀 있다. 즉, i번째 석판에는 i번째 알파벳 대문자가 적혀 있다. 인접한 석판의 거리는 1이다. 따라서 A가 적힌 석판에서 출발해Z가 적..

세그먼트 트리(Segment Tree) 자료구조
개발/알고리즘2024. 5. 15. 15:08세그먼트 트리(Segment Tree) 자료구조

1. 세그먼트 트리란? 간격 또는 세그먼트에 대한 정보를 저장하는데 사용되는 트리 데이터 구조이다.주어진 포인트를 포함하는 저장된 세그먼트에 대해서 쿼리할 수 있다. N개의 원소에 대하여 구성된 세그먼트 트리는 트리를 생성하는 비용은 O(N)이다.원소를 Update하는데 O(Log N)의 시간 복잡도가 필요하고, 쿼리 또한 O(Log N)의 시간 복잡도가 요구된다. 세그먼트 트리는 누적합, 구간합, 구간의 최솟값을 구하는데 사용할 수 있다. 1.1. 생성1차원 배열을 통해 구현하며 0번 Index는 사용하지 않는다.원본 배열 Size의 2배 크기로 구성한다.크기를 2배로 잡는 것은, 원본 배열로 세그먼트 트리의 리프 노드를 구성하게 되면, 세그먼트 트리가 이진트리이므로 (리프노드 개수 / 2)를 하면 모..

크루스칼 알고리즘 & Union-Find
개발/알고리즘2024. 5. 15. 14:06크루스칼 알고리즘 & Union-Find

노드 정점들을 연결하는데 가장 적은 비용으로 연결하려면 어떻게 해야할까?   해당 질문을 해결하기 위한 대표적인 방법은 크루스칼 알고리즘이다.크루스칼 알고리즘이란, 모든 노드를 지나면서 사이클이 생기지 않고 가장 적은 비용을 가는 경로를 알 수 있다.   이 4개의 그림을 보자.모두 그래프의 모든 정점을 지난다는 것을 알 수 있으며, 순환고리(사이클이 생기지 않는 연결)이다.이러한 연결을 신장 트리라고 한다. 각 그림들의 가중치 합은 다음과 같다.3 + 4 + 1 = 8 4 + 3 + 2 = 94 + 5 + 2 = 113 + 2 + 1 = 6 가장 작은 가중치 합을 가진 그림은 우하단의 그래프이며, 이러한 값을 갖는 연결을 최소 신장트리라고 한다.최소 신장 트리를 구하는 대표적인 방법은 다음과 같다.프림..

5397번: 키로거
백준/문제2024. 5. 15. 03:175397번: 키로거

문제 출처 : https://www.acmicpc.net/problem/5397 언어 : Kotlin 문제 설명 :창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다.  강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입력 :첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한..

2042번: 구간 합 구하기
백준/문제2024. 5. 15. 02:282042번: 구간 합 구하기

문제 출처 : https://www.acmicpc.net/problem/2042 언어 : Kotlin 문제 설명 :어떤 N개의 수가 주어져 있다. 그런데 중간에 수의 변경이 빈번히 일어나고 그 중간에 어떤 부분의 합을 구하려 한다. 만약에 1,2,3,4,5 라는 수가 있고, 3번째 수를 6으로 바꾸고 2번째부터 5번째까지 합을 구하라고 한다면 17을 출력하면 되는 것이다. 그리고 그 상태에서 다섯 번째 수를 2로 바꾸고 3번째부터 5번째까지 합을 구하라고 한다면 12가 될 것이다. 입력 :첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리..

1976번: 여행 가자
백준/문제2024. 5. 15. 00:481976번: 여행 가자

문제 출처 : https://www.acmicpc.net/problem/1976 언어 : Kotlin 문제 설명 :동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인지 알아보자. 물론 중간에 다른 도시를 경유해서 여행을 할 수도 있다. 예를 들어 도시가 5개 있고, A-B, B-C, A-D, B-D, E-A의 길이 있고, 동혁이의 여행 계획이 E C B C D 라면 E-A-B-C-B-C-B-D라는 여행경로를 통해 목적을 달성할 수 있다. 도시들의 개수와 도시들 간의 연결 여부가 주어져 있고, 동혁이의 여행 계획에 속한 도시들이 순서대로 주어졌을 때 가능한지 여부를..

Compose Navigation 경로 정의 및 NavHostController
개발/안드로이드2024. 5. 14. 14:58Compose Navigation 경로 정의 및 NavHostController

이번에 작성하고 있는 글은 Jetpack Compose의 Navigation 튜토리얼 부분이다.  https://developer.android.com/courses/pathways/android-basics-compose-unit-4-pathway-2?hl=ko#codelab-https://developer.android.com/codelabs/basic-android-kotlin-compose-navigation Jetpack Compose의 Navigation  |  Android Basics Compose - Navigation in Jetpack Compose  |  Android DevelopersNavigation 구성요소를 사용하여 화면이 더 많은 복잡한 앱을 빌드하는 방법과 여러 컴포저블..

2747번: 피보나치 수
백준/문제2024. 5. 14. 11:232747번: 피보나치 수

문제 출처 : https://www.acmicpc.net/problem/2747 언어 : Kotlin 문제 설명 :피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 :첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다. 출력 :첫째 줄에 n번째 피보나치 수를 ..

14500번: 테트로미노
백준/문제2024. 5. 14. 11:0514500번: 테트로미노

문제 출처 : https://www.acmicpc.net/problem/14500 언어 : Kotlin 문제 설명 :폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다.정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다.아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다.테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로..

2490번: 윷놀이
백준/문제2024. 5. 14. 00:292490번: 윷놀이

문제 출처 : https://www.acmicpc.net/problem/2490 언어 : Kotlin 문제 설명 :우리나라 고유의 윷놀이는 네 개의 윷짝을 던져서 배(0)와 등(1)이 나오는 숫자를 세어 도, 개, 걸, 윷, 모를 결정한다. 네 개 윷짝을 던져서 나온 각 윷짝의 배 혹은 등 정보가 주어질 때 도(배 한 개, 등 세 개), 개(배 두 개, 등 두 개), 걸(배 세 개, 등 한 개), 윷(배 네 개), 모(등 네 개) 중 어떤 것인지를 결정하는 프로그램을 작성하라. 입력 :첫째 줄부터 셋째 줄까지 각 줄에 각각 한 번 던진 윷짝들의 상태를 나타내는 네 개의 정수(0 또는 1)가 빈칸을 사이에 두고 주어진다. 출력 :첫째 줄부터 셋째 줄까지 한 줄에 하나씩 결과를 도는 A, 개는 B, 걸은 C..

image