반응형

분류 전체보기 25

[Kotlin] 코틀린 JetPack Compose Modifier

ModifierJetpack Compose에서 사용하는 메서드Text, Box같은 Compose 기본 컴포저블 함수에 기본적으로 modifier 파라미터를 가지고 있음UI 요소를 다루기 위한 도구로 XML보다 편리하게 사용 가능 Text( text = "Click me!", modifier = Modifier .padding(16.dp) // 16dp만큼 패딩을 줌 .background(Color.Yellow) // 배경을 노란색으로 .clickable { println("Clicked!") } // 클릭이벤트 설정) 위와 같이 Text함수의 modifier 파라미터에 전달하면 됨.을 여러번 사용하여 여러 속성을 한번에 다루는 체이닝 방식을 사용 기본적으..

언어/Kotlin 2025.04.22

[Kotlin] 코틀린 @Composable 어노테이션 (Jetpack Compose)

Jetpack Compose코틀린에서 사용하는 도구로 UI개발을 도와줌자바에서는 사용이 불가능하고, 기존의 XML로 작성한 UI를 코틀린으로 작업할 수 있음 구성 가능한 함수 : Compose에서 UI의 기본 블록1. 무엇도 반환하지 않음2. UI 일부를 설명3. 함수 앞에 @Composable 주석을 달아야함@Composablefun Greeting(name: String) { Text(text = "Hello $name!")}* Text는 라이브러리에서 제공하는 텍스트를 띄우는 구성 가능한 함수

언어/Kotlin 2025.04.21

[Kotlin] 코틀린 object - singleton 구현

일반적인 싱근톤 패턴의 정의singleton - 싱글톤클래스의 생성을 하나만 하기위한 방법최초 한번만 메모리에 할당되어 사용됨여러번의 생성자 호출이 일어나도 처음에 생성된 객체를 반환하게 됨*한번 생성된 싱글톤 인스턴스는 반납되지않음 -> 메모리를 차지하게 됨코틀린에서의 싱글톤 구현object : 코틀린에서 싱글톤 패턴을 구현하기 위한 키워드class 키워드 대신 사용object singletonClass { val num = mutableListOf() }fun main() { singletonClass.num.add(1) singletonClass.num.add(2) println(a.x) //[1, 2]} 주 생성자, 부 생성자 사용불가프로세스가 실행될 때 인스턴스가 생성됨->..

언어/Kotlin 2025.04.20

[백준/파이썬]12865번 - 평범핸 배낭 / 냅색, 다이나믹

접근 방법 대표적인 배낭 문제로 물품을 하나씩 선택하여 각 무게별로 어떤게 최고의 선택인지 갱신한다풀이 이차원 배열을 선언하여 arr[선택한 물품][총 물품의 무게]로 만든다물품1부터 하나씩 선택하며 각각의 무게가 최대일때1. 이전물품까지의 가치를 그대로 가져올지2. 이전물품까지에서 현재 물품의 무게를 뺀 가치에 현재 물품의 가치를 더한 값둘중에 더 큰값을 저장하면 된다 따라서 점화식은 아래가 된다w = arr[i][0]v = arr[i][1]bag[i][j] = max(bag[i-1][j], bag[i-1][j-w] + v)정답 코드import sysinput = sys.stdin.readlinen, k = map(int, input().split())arr = []arr.append((0, 0))fo..

백준 2025.04.13

[백준/파이썬]1967번 - 트리의 지름 / bfs, dfs

접근 방법 1. 잎 노드를 구한다2. 하나의 잎 노드에서 다른 잎 노드들까지의 길이를 dfs로 계산하여 최대값을 갱신시킨다풀이 잎 노드들을 구하는 과정은 루트 노트가 항상 1이므로1부터 bfs로 더이상 연결된 노드가 없는 노드를 잎 노드로 하여 찾았다. 이후 각 잎 노드들에 대해 dfs반복을 하여다른 잎 노드를 만났을때마다 최대 길이를 비교하여 갱신한다정답 코드import sysinput = sys.stdin.readlinen = int(input())graph = [[] for _ in range(n)]for i in range(n - 1): a, b, v = map(int, input().split()) graph[a - 1].append((b - 1, v)) graph[b - 1].append..

백준 2025.04.13

[백준/파이썬]13549번 - 숨바꼭질 3 / BFS

접근방법 N에서 K로 가는 최단 시간을 구하기 위해서는 N부터 n*2, n-1, n+1에 해당하는 모든점을 계속 접근해가며시간을 구해야한다고 생각했다.따라서 BFS를 이용했다풀이 크기가 200001인 배열을 만들고 N을 0으로 하여 점을 이동하면서 시간을 계속 갱신하였고모든 점을 돌았을때 K에 해당하는 시간을 출력하였다.BFS안에서 시간소요가 없는 x*2와 x-1, x+1은 분기하여 처리하였다계산한 시간이 더 빨라 값이 갱신되는 경우만 큐에 넣었다정답 코드import sysinput = sys.stdin.readlinen, k = map(int, input().split())INF = 200001line = [INF] * 200001def bfs(): q = [] q.append(n) line[n]..

백준 2025.04.12

[백준/파이썬]9251번 - LCS / 다이나믹

접근 방법 이문제의 유형은 다이나믹 프로그래밍으로 어떤 작은 문제로 풀 수 있을지 찾아야한다두 문자열에 대한 선후관계는 없고 겹치는 문자를 찾는 것이 아닌, 길이만 출력하면 된다길이가 짧을 때의 LCS를 구하고, 길이가 길어질 때 전의 결과를 그대로 가져오거나 +1하면 된다풀이 두 문자열을 동등하게 비교하기 위해 이차원 배열을 만들고문자열을 앞에서부터 하나씩 비교한다문자가 다르면 arr[i-1][j]와 arr[i][j-1]중에 큰 값을 가져오고문자가 같으면 arr[i-1][j-1]+1을 하면된다정답 코드import sysinput = sys.stdin.readlinet1 = input().strip()t2 = input().strip()arr = [[0] * (len(t2) + 1) for _ in ra..

백준 2025.04.12

[백준/파이썬]11404번 - 플로이드 / 다익스트라 (플로이드-워셜)

접근 방법플로이드 워셜 알고리즘을 몰랐기 때문에 다익스트라를 n번 사용하는 것으로 해결했다. 풀이보통 다익스트라 문제를 풀때는 dis나 visited 배열을 전역으로 선언하는데이번에는 n번 반복하면서 초기화 시켜야하기 때문에 함수안에서 선언하였다정답 코드import sysinput = sys.stdin.readlineINF = 10000000000n = int(input())m = int(input())line = [[] for j in range(n)]for i in range(m): p1, p2, t = map(int, input().split()) line[p1 - 1].append((p2 - 1, t))ans = []def min_dis(dis, visited): min = INF min_..

백준 2025.04.10

[백준/파이썬]1753번 - 최단경로 / 다익스트라

접근 방법 하나의 점에서 각 정점까지의 최단경로를 모두 구해야하기 때문에 다익스트라 알고리즘을 사용하였다.처음에는 모든 점까지의 거리를 최대로 설정해놓고, 하나씩 방문해가며 거리를 좁혀갔다.풀이 간선의 정보를 길이 v의 리스트를 만들어 각각의 u, v, w에 대해 아래와 같이 저장하였다.line = [[] for j in range(n)]for i in range(m): u, v, w = map(int, input().split()) line[u - 1].append((v - 1, w)) 각 정점을 방문 할때마다 가장 가까운 점을 알아내야 하므로 이부분을 따로 함수로 만들었다. 정답 코드import sysinput = sys.stdin.readlineINF = 100000000n, m = map(in..

백준 2025.04.08

[백준/파이썬]11660번 - 구간 합 구하기 5 / 누적합

접근 방법 단순히 숫자들을 이차원 배열로 받아 입력 케이스마다 합을 구하는 것은 시간이 많이 소요될 것이라 생각했고누적합을 이용하기로 했다.배열을 행을 기준으로 누적합으로 만들어놓고 케이스에 따라 뺄셈만 하여 합을 구한다풀이 행을 기준으로 x행은 원래 x행의 수와 x-1행의 수를 더해갔다 이후 각 케이스에 따라 각 열마다처음 시작 행이 1일 경우와 1이 아닌, 중간부터 합을 구하는 경우로 나누어 계산했다.if x1 == 1: sum += arr[x2 - 1][j]else: sum += arr[x2 - 1][j] - arr[x1 - 2][j]정답 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())arr = [[0 for i in..

백준 2025.04.07
반응형