전체 글 211

[Kotlin] 백준 4803번 : 트리 <Gold 4>

https://www.acmicpc.net/problem/4803 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main(args: Array) = with(BufferedReader(InputStreamReader(..

Bakejoon/Gold 2023.08.05

[Kotlin] StringBuilder

StringBuilder가 뭘까? StringBuilder 는 코틀린에서 동적으로 문자열을 조작할 수 있는 객체다. 그럼 다른건 동적이지 않나? String의 경우 연산 방식이 다르다. var text = "abc" text += "def" println(text) //abcdef 이게 우리가 아는 일반적인 방식일거다. 봐라 "abc"에 "def"가 추가돼서 동적으로 "abcdef"가 되지 않았나! 라고 생각할 수도 있다. 하지만 실상은 다르다 text -> "abc" 위와 같은 모양으로 text라는 변수가 "abc"라는 값을 가리키고(담고) 있었다고 가정하자. "def"를 더할 경우 아래와 같은 모양이 된다. "abc" text -> "abcdef" 이게 뭘 의미할까. text라는 변수에 "def"를 ..

[Kotlin] 백준 11725번 : 트리의 부모 찾기 <Silver 2>

https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.LinkedList fun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))) { val bw = BufferedWri..

Bakejoon/Silver 2023.08.03

플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm)

플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm)이란? 그래프 혹은 이차원 배열에서 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우 사용한다. 가중치가 있는 그래프에서 각각의 지점까지의 최소 거리를 구하는 알고리즘 이다. ABCD라는 네 지점이 있고, 각각의 가중치가 아래와 같다고 가정한다. A-B 10 A-C 3 A-D 4 B-C 3 B-D 5 C-D 7 이런 가중치가 있을 경우 A에서 B를 가는 최소 경로를 구해보자. A에서 바로 B로 가는 경우 10의 가중치이지만, A-C-B로 간다면 6이 가중치로 더 적은 거리로 이동할 수 있다. 더 쉽게 말하자면 서울에서 부산을 간다고 생각해보자. 그런데 오후 늦게 출발을 해서 대전 혹은 대구에서 하룻밤을 보내고 가야..

Algorithm 2023.08.02

2023년 경기청년 갭이어 프로그램 2기 - 최종합격

우리학교 컴공 오픈 톡방에서 발견한 프로그램이다. 생각보다 괜찮아 보여서 후다닥 팀원을 모아봤다. 같은 동아리에서 같이 Android를 할 팀원 하나, 다른 동아리 회장, 부회장을 BE로 꼬셨다. 당연히 컴공 4명이다보니 개발을 하기로 했고, 플랫폼은 Android로 선정했다. 아이디어 회의를 하고, 하나를 정해 지원서를 작성했다. 다들 방학때 바쁘다 보니 학기중에 할 수 있도록 조금 늦게 시작하는 2기로 신청을 했다. 7월 14일 1차 심사 결과가 나왔다. 엄청 합격자가 많더라. 표 보면서 혹시 떨어졌을까 걱정하면서 스크롤 내렸는데 내이름이랑 우리 팀원들 이름이 있었다!!! 단톡방에서 다같이 엄청 좋아했다. 그런데 총 인원수를 보니까 1차 선발 예정 인원보다 지원자 수가 더 적더라... 그냥 1차 서류..

[Jetpack Compose] Coil - 이미지 로딩 라이브러리

코일이 뭘까? Coil은 Kotlin Coroutines로 만들어진 Android 백엔드 이미지 로딩 라이브러리로, Cououtine Image Loader의 약자이다. 근데 여기서 궁금한게 하나 생길 수 있다. 안드로이드에서 이미지를 로딩하는 라이브러리로 Glide라는 검증된 라이브러리가 있는데 왜 Coil을 쓸까?? 공식문서의 장점을 보자. 빠르다: Coil은 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행합니다. 가볍다: Coil은 최대 2000개의 method들을 APK에 추가합니다(이미 OkHttp와 Coroutines을 사용중인 앱에 한하여), 이는 Picasso 비슷한 수준이며 Glide와 Fresco보다는..

2023 INHA SW NET-Zero 공동 해커톤 - 장려상

처음으로 해커톤에 참여해봤다. FE(Android)2명과 BE(Spring)2명으로 동아리 사람들끼리 팀원을 꾸려서 참여했다. 우리학교에서 지원자가 많지 않아 사실상 1차 심사는 없었고, 바로 해커톤이었다. 주제는 Net-Zero. 즉 탄소 중립을 위한 프로그램 개발 해커톤이었다. 대회는 사흘간 진행됐다. 첫날은 오전에 가서 관련 설명을 듣고, 아이디어 발표회를 진행 후 집으로 돌아오는 일정이었다. 자취방에서 수원역까지 30분, 수원역에서 인하대까지 1시간.... 수인분당 배차가 레전드라 거의 두시간씩 걸렸다. 그래도 갈때는 밤샘 개발하고 가는 길이라서 지하철 내내 자느라 얼마나 긴지 체감이 잘 안됐다. 그러고 인하대 갔는데 학교 완전 좋더라... 특히 평지! 우리학교는 산에있는데 평지가 진짜 진짜 부러..

[Kotlin] 백준 2606번 : 바이러스 <Silver 3>

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))..

Bakejoon/Silver 2023.07.29

[Kotln] 백준 2617 : 구슬 찾기 <Gold4>

https://www.acmicpc.net/problem/2617 2617번: 구슬 찾기 모양은 같으나, 무게가 모두 다른 N개의 구슬이 있다. N은 홀수이며, 구슬에는 번호가 1,2,...,N으로 붙어 있다. 이 구슬 중에서 무게가 전체의 중간인 (무게 순서로 (N+1)/2번째) 구슬을 찾기 위해서 www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter var cntLTH = 0 var cntHTL = 0 fun main(args: Array) = with(BufferedReader(InputSt..

Bakejoon/Gold 2023.07.28

[Jetpack Compose] 폰트 적용법

안드로이드 어플을 개발하다보면 디자인이 참 중요하다. 사실 모든 프론트가 다 중요하다. 그중에서 큰 영향을 끼치는 것 중 하나가 폰트다. 예쁜디자인에 구린 폰트가 들어있는것만큼 화나는게 없다. 정말 모니터 한대 치고싶어지니까 비싼 모니터 부수기 전에 폰트 적용하는 법을 배워보자. 1. res폴더 내부에 font 폴더 만들기 res -> New -> Android Resource Director를 누르면 이상한 창이 하나 나올거다. Directory name을 font로 설정하고 Resource type도 font로 설정해주고 ok를 누른다. 2. 폴더에 원하는 폰트 파일 넣기 이때 중요한게 파일 이름이다. 반드시 소문자와 _(언더바)만 사용해야 한다. 어떻게 알았냐고? 알고싶지 않았다... 에러 나니까 ..