본문 바로가기

전체 글279

[Kotlin] 공부일지(2024-08-05) 오늘 공부한 내용 정리(2024년 8월 5일)  알고리즘 문제풀이과일 탕후루(Silver 2, 30804번)https://rkdrkd-history.tistory.com/177 [Kotlin, S2] 백준 30804번 과일 탕후루과일 탕후루(30804번)Silver 2#구현 #브루트포스 알고리즘 #두 포인터 문제 내용  문제 접근탕후루에 꽂혀 있는 과일의 종류는 총 9종류이고 만들어야 하는 탕후루는 특정 과일 2개가 연속되어 있rkdrkd-history.tistory.com  케빈 베이컨의 6단계 법칙(Silver 1, 1389번)https://rkdrkd-history.tistory.com/178 [Kotlin, S1] 백준 1389번 케빈 베이컨의 6단계 법칙케빈 베이컨의 6단계 법칙(1389번)Si.. 2024. 8. 5.
[Kotlin, S1] 백준 1389번 케빈 베이컨의 6단계 법칙 케빈 베이컨의 6단계 법칙(1389번)Silver 1#그래프 이론 #그래프 탐색 #너비 우선 탐색 #최단 경로 #플로이드–워셜 문제 내용  문제 접근각 사용자가 어떤 사용자와 관계를 맺고 있는지 확인해서 그래프를 돌면서 몇 번째 단계에서 원하는 사용자에게 닿을 수 있는지 확인해야 한다.입력 예제 1을 이용해 그래프를 먼저 구성해 주겠다. 그래프의 구성은 다음과 같이 해줄 수 있다.import java.io.BufferedReaderimport java.io.InputStreamReaderimport java.util.*import kotlin.math.minprivate var graph = arrayOf>()private var visited = booleanArrayOf()private var res.. 2024. 8. 5.
[Kotlin, S2] 백준 30804번 과일 탕후루 과일 탕후루(30804번)Silver 2#구현 #브루트포스 알고리즘 #두 포인터 문제 내용  문제 접근탕후루에 꽂혀 있는 과일의 종류는 총 9종류이고 만들어야 하는 탕후루는 특정 과일 2개가 연속되어 있는 탕후루 중 가장 긴 경우를 확인하는 것이기 때문에 9C2의 경우를 모두 체크해서 가장 긴 길이가 정답이 될 것이다. 길이를 체크하기 위해서는 일단 9종류의 과일 중에서 중복을 포함하지 않고 선택해야 하기 때문에 2중 반복문으로 2가지의 경우를 선택할 수 있다.자세한 설명은 조합 알고리즘을 검색해 보면 자세한 설명이 나올 것이다.범위는 과일 1부터 9까지이기 때문에 1..9로 설정해 준다. 그다음 선택된 두 과일이 입력값에 있으면 길이 카운트를 세줘야 한다.입력값이 두 과일 중 하나인 경우를 고르는 조건.. 2024. 8. 5.
[Kotlin, S2] 백준 21736번 헌내기는 친구가 필요해 헌내기는 친구가 필요해(21736번)Silver 2#그래프 이론 #그래프 탐색 #너비 우선 탐색 #깊이 우선 탐색 문제 내용  문제 접근캠퍼스의 구조를 2차원 리스트의 구조로 띄운 다음에 방문 여부와 벽(X)인지 확인해 위치를 이동해 가면서 만나는 사람이 있는지 확인해 주면 된다.문제의 예제 1을 예로 들어 보겠다.3 5OOOPOOIOOXOOOXP현재 도연이의 위치가 I이기 때문에 시작 좌표를 I값이 있는 곳으로 지정을 해주어야 한다.그리고 도연이는 위, 아래, 오른쪽, 왼쪽으로만 이동할 수 있기 때문에 각 방향으로 이동했을 때 그 위치로 이동할 수 있는지 확인해 주어야 한다.이동할 수 있는 위치인지 확인하는 조건은 2가지를 써야 한다.1. 한 번도 방문한 적 없는 위치인지?2. 해당 위치가 벽(X)이 .. 2024. 8. 4.
[Kotlin, S2] 백준 18111번 마인크래프트 마인크래프트(18111번)Silver 2#구현 #브루트포스 알고리즘 문제 내용  문제 접근문제에서 주어진 높이는 0부터 256까지이다.이 높이를 이용해 반복문을 돌려서 높이가 g 일 때 높이가 g인 평평한 바닥을 만들기 위해 얼마나 시간이 걸리는지 확인해야 한다.그전에 입력된 값에서 어떤 높이의 블록이 몇 개 들어 있는지 확인해야 한다.그 값은 Map으로 저장할 것이다. key를 높이, value를 개수로 정하겠다.val block = mutableMapOf()이제 위에서 언급했다시피 0 ~ 256까지 반복해서 돌아 준다.돌면서 기존의 입력값에서 높이가 g인 평지를 만들기 위해 블록을 얼마나 캐고 설치해야 하는지 계산해야 한다.블록을 캐는 작업은 2초가, 블록을 설치하는 데는 1초의 시간이 소요된다.현재.. 2024. 8. 3.
[Android, 내일배움캠프] 공부일지(2024-08-02) 오늘 공부한 내용 정리(2024년 8월 2일)  알고리즘 문제풀이착신 전환 소동(Silver 3, 31409번, 마라톤)https://rkdrkd-history.tistory.com/173  앱 개발 심화 개인 과제무한 스크롤 구현무한 스크롤 구현무한 스크롤을 적용하기 위해서는 리스트에 마지막 데이터가 보일 때를 감지해서 새로운 페이지의 API를 재호출 해주어야 한다.기존에는 API의 1페이지만 구현되었지만, 이제는 그 이후의 페이지들까지 같이 보이게 된다. 먼저 최하단 스크롤에 도달했을 때를 정의할 state를 생성한다.val reachedBottom: Boolean by remember { derivedStateOf { val lastVisibleItem = state.layoutI.. 2024. 8. 2.
[Kotlin, S3] 백준 31409번 착신 전환 소동 착신 전환 소동(31409번)Silver 3#그래프 이론 #애드 혹 #해 구성하기 #함수형 그래프 문제 내용  문제 접근전화기가 주어졌을 때, 착신 전환을 해서 모든 전화기를 먹통으로 만드는 최소의 경우를 구해야 하는 문제이다.문제 본문의 예시를 들면, A => B, B => C, C => A 순으로 전화를 연결하고 있다.3개의 전화기가 무한 사이클을 돌고 있다는 것을 알 수 있다.전화기 여러 개를 무한 사이클을 돌리는 방법은 다양하다.문제의 입력 예제만 봐도 알 수 있다.입력 예제 2는 다음과 같이 입력을 받는다.52 1 5 3 4위 입력값을 그래프로 나타내면 아래와 같다.그래프의 전화가 서로 이어져서 무한한 사이클을 형성했다. 이 경우에는 이미 먹통 상태이므로, 바꿔주지 않아도 된다. 각 전화기에 연.. 2024. 8. 2.
[Android, 내일배움캠프] 공부일지(2024-08-01) 오늘 공부한 내용 정리(2024년 8월 1일)  알고리즘 문제풀이크냑과 3D 프린터(Silver 5, 30923번, 마라톤)https://rkdrkd-history.tistory.com/170 [Kotlin, S5] 백준 30923번 크냑과 3D 프린터크냑과 3D 프린터(30923번)Silver 5#수학 #기하학 문제 내용  문제 접근너비와 폭(가로와 세로)이 1이고 높이가 h인 겹쳐 있는 입체 도형의 겉넓이를 구하는 문제이다.너비와 폭의 넓이가 1 고정이기rkdrkd-history.tistory.com  동가수열 구하기(Silver 4, 25184번, 마라톤)https://rkdrkd-history.tistory.com/171 [Kotlin, S4] 백준 25184번 동가수열 구하기동가수열 구하기(25.. 2024. 8. 1.
[Kotlin, S4] 백준 25184번 동가수열 구하기 동가수열 구하기(25184번)Silver 4#해 구성하기 문제 내용  문제 접근문제의 동가수열에는 2가지의 조건을 만족해야 한다.1. 1부터 N까지의 수를 가지고 중복되면 안 된다.2. 양옆의 원소의 차이는 N / 2 이상이다(N이 4인 경우: [2, 4, 6...]. 위 조건을 만족하면서 수열을 구성하려면 작은 수부터 시작해 큰 수까지 N / 2로 더해가면서 수열을 구성한다.7을 예시로 들어 보겠다. 7을 예로 들면 1~7까지 원소로 구성되어야 하고, 각 원소의 차이는 7 / 2에 소수점을 버린 3이다.처음 시작값을 원소 차잇값으로 시작한다(N / 2).3부터 시작해 3씩 더해가면 3, 6 순서대로 수열에 구성된다.이 수열은 1번 조건은 만족하지 않지만, 2번 조건을 만족한다.이 수열에 2번 조건을 만.. 2024. 8. 1.
[Kotlin, S5] 백준 30923번 크냑과 3D 프린터 크냑과 3D 프린터(30923번)Silver 5#수학 #기하학 문제 내용  문제 접근너비와 폭(가로와 세로)이 1이고 높이가 h인 겹쳐 있는 입체 도형의 겉넓이를 구하는 문제이다.너비와 폭의 넓이가 1 고정이기 때문에 그냥 전체 겉넓이에 겹치는 부분을 빼는 방법을 쓸 수도 있고, 도형의 각 넓이를 일일이 구해주는 방법이 있다.나는 도형의 각 넓이를 일일이 구해 더해주는 방법을 사용했다.문제의 예제 1의 도형 구조를 보면,입력받은 순서대로 입체 도형이 주어진다.입체 도형의 너비와 폭이 1이라서 옆면의 넓이는 각 도형의 높이와 같다.겉넓이를 구하기 위해서는 사각형들의 넓이의 합을 모두 구해주면 된다. 사진 1-1의 겉넓이를 구하기 위해서는(정면을 앞이라고 칭하겠다)도형의 앞면과 뒷면의 넓이: hList.su.. 2024. 8. 1.
[Android, 내일배움캠프] 공부일지(2024-07-31) 오늘 공부한 내용 정리(2024년 7월 31일)  코드카타 문제풀이근무 지옥에 빠진 푸앙이(25593번, Bronze 1)https://rkdrkd-history.tistory.com/166 [Kotlin, B1] 백준 25593번 근무 지옥에 빠진 푸앙이 (Small)근무 지옥에 빠진 푸앙이 (Small)(25593번)Bronze 1#구현 #자료 구조 #문자열 #해시를 사용한 집합과 맵 문제 내용  문제 접근문제를 이해하기만 하면 된다. 입력 형식이 주의 개수인 N에서 4를 곱한rkdrkd-history.tistory.com  베스트앨범(프로그래머스, Level 3)https://rkdrkd-history.tistory.com/168 [Kotlin, Lv.3] 프로그래머스 베스트앨범베스트앨범Level .. 2024. 7. 31.
[Kotlin, Lv.3] 프로그래머스 베스트앨범 베스트앨범Level 3https://school.programmers.co.kr/learn/courses/30/lessons/42579 문제 내용  문제 접근가장 많이 재생된 노래를 장르별로 2개씩 모아서 각 노래의 고유 번호를 순서대로 출력해야 한다.문제의 예제를 표로 그려보면 다음과 같다.입력된 순서대로 고유 번호가 주어진다.그리고 노래의 장르와 재생 횟수가 같이 주어진다. 장르와 재생 횟수는 고유 번호가 동일한 것끼리가 한 노래의 통계가 될 것이다. 문제에서 요구한 조건대로 우선적으로 정렬해 준 다음 고유 번호를 출력하자.1. 가장 많이 재생된 장르2. 장르 내에서 가장 많이 재생된 노래3. 장르 내에서 재생 횟수가 같으면 고유 번호가 작은 노래위 조건들을 순서대로 적용시켜서 순서를 변경시키면 아래.. 2024. 7. 31.
[Kotlin, B1] 백준 25593번 근무 지옥에 빠진 푸앙이 (Small) 근무 지옥에 빠진 푸앙이 (Small)(25593번)Bronze 1#구현 #자료 구조 #문자열 #해시를 사용한 집합과 맵 문제 내용  문제 접근문제를 이해하기만 하면 된다. 입력 형식이 주의 개수인 N에서 4를 곱한 줄 만큼 입력이 주어지고 있다. 위 그림에서 눈치가 빠르신 분들은 대강 눈치를 챌 것이다.첫 줄의 주의 개수를 입력받고 문자열들이 주의 개수(4)의 4를 곱한 만큼의 수(16)만큼 입력된다는 사실을 볼 수 있다. 또한 한 줄에 공백을 기준으로 7개로 나뉘어서 입력된다. 또한 문제 설명에서 4 교대 근무를 선다고 되어 있다.오전 8 ~ 오후 12, 오후 12 ~ 오후 6, 오후 6 ~ 오후 10, 오후 10 ~ 오전 8 해서 4번의 교대가 이루어진다.- - - - - pangyo puang- .. 2024. 7. 31.
[Android, 내일배움캠프] 공부일지(2024-07-30) 오늘 공부한 내용 정리(2024년 7월 30일)  코드카타 문제풀이Fly me to the Centauri(Gold 5, 1011번)https://rkdrkd-history.tistory.com/164 [Kotlin] 백준 1011번 Fly me to the Alpha CentauriFly me to the Alpha Centauri(1011번)Gold 5#수학 문제 내용 문제 접근수학적으로 접근하면 반복문을 사용하지 않고도 문제를 해결할 수 있다.먼저 장치가 작동하는 횟수를 기준으로 거리와 최댓값을 확rkdrkd-history.tistory.com  5분 기록보드 활용 특강이력서 사전 세션(5분 기록 보드로 20시간 절약하기)부지런한 주니어는 빨리 취업한다.최종 프로젝트의 의미개발자로서 나의 기술적인 .. 2024. 7. 30.
[Kotlin, G5] 백준 1011번 Fly me to the Alpha Centauri Fly me to the Alpha Centauri(1011번)Gold 5#수학 문제 내용 문제 접근수학적으로 접근하면 반복문을 사용하지 않고도 문제를 해결할 수 있다.먼저 장치가 작동하는 횟수를 기준으로 거리와 최댓값을 확인하면 다음과 같다.이 표를 보면 3가지의 규칙을 확인할 수 있다.1. 최댓값이 증가하면서 2번씩 반복된다.2. 거리는 이전의 거리에서 현재의 최댓값을 더한 값과 같다.3. 최댓값이 변하는 지점은 항상 최댓값의 제곱 값이다. 사진 1-1의 표를 이용해 거리의 사이에 존재하는 데이터들의 값들도 표로 나타내 보자.분량 문제상 거리가 8부터 16까지의 데이터들에서 최댓값과 장치 작동 횟수를 구해 보겠다.녹색이 최댓값이 변하는 구간, 노란색이 작동 횟수가 변하는 구간이다.녹색의 경우는 위에서.. 2024. 7. 30.
[Android, 내일배움캠프] 공부일지(2024-07-29) 오늘 공부한 내용 정리(2024년 7월 29일)  알고리즘 문제풀이토마토(7569번, Gold 5)https://rkdrkd-history.tistory.com/161 [Kotlin] 백준 7569번 토마토(Gold 5)토마토(7569번)Gold 5#그래프 이론 #그래프 탐색 #너비 우선 탐색 문제 내용 문제 접근비슷한 문제인 토마토(7576)와는 상자를 여러 개를 받아 3차원으로 작업해야 하는 것이 다르다.입력을 받을 때,rkdrkd-history.tistory.com  크게 만들기(2812번, Gold 3)https://rkdrkd-history.tistory.com/162 [Kotlin] 백준 2812번 크게 만들기(Gold 3)크게 만들기(2812번)Gold 3#자료 구조 #그리디 알고리즘 #스택.. 2024. 7. 29.
[Kotlin, G3] 백준 2812번 크게 만들기 크게 만들기(2812번)Gold 3#자료 구조 #그리디 알고리즘 #스택 문제 내용 문제 접근n자리의 숫자가 주어지고, 숫자에서 k개의 숫자를 뺀 숫자의 경우들 중, 가장 큰 값을 출력해야 한다.가장 큰 값을 얻기 위해서는 맨 앞자리의 수가 제일 크고, 마지막 자릿수가 제일 작은 내림차순의 숫자에 가까워져야 제일 커진다.stack에 값을 넣으면서 들어간 값보다 더 큰 수가 들어오면 stack에 들어간 숫자를 빼는 방식으로 stack을 사용해야 한다.k번 숫자를 지우고 나면 나머지 숫자들은 그대로 stack에 넣어서 출력해 주면 된다.  문제 해결 코드더보기import java.io.BufferedReaderimport java.io.InputStreamReaderimport java.util.Stackpr.. 2024. 7. 29.
[Kotlin, G5] 백준 7569번 토마토 토마토(7569번)Gold 5#그래프 이론 #그래프 탐색 #너비 우선 탐색 문제 내용 문제 접근비슷한 문제인 토마토(7576)와는 상자를 여러 개를 받아 3차원으로 작업해야 하는 것이 다르다.입력을 받을 때, 미리 생성한 ArrayDeque에 1(익은 토마토)이 들어 있으면 x, y, z, 0을 리스트로 받아서 넣어 준다.x, y, z는 익은 토마토의 좌표이고, 0은 경과한 날짜를 뜻한다. 나중에 0을 하나씩 더해 가면서 경과 날짜를 체크할 것이다.3차원 리스트에 입력값을 모두 넣어 주고 나서, 토마토를 bfs를 이용해 현재 토마토의 위치를 담은 ArrayDeque에 있는 값을 하나씩 빼면서 뺀 값의 x, y, z에서 앞, 뒤, 오른쪽, 왼쪽, 위, 아래에 해당하는 토마토들을 확인해서 덜 익은 토마토(0.. 2024. 7. 29.
[Android, 내일배움캠프] 공부일지(2024-07-26) 오늘 공부한 내용 정리(2024년 7월 26일)  코드카타 문제풀이패션왕 신해빈(Silver 3, 9375번)문제 내용 문제 풀이 방법가진 의상의 수가 n개 주어진다.의상 입력은 의상의 이름과 의상의 종류가 주어진다.같은 종류의 의상은 하나만 입을 수 있고 한 종류 이상의 의상을 안 입을 수도 있다.해빈이가 알몸이 아닌 상태로 입을 수 있는 의상의 경우의 수를 출력.알몸이 아닌 상태라는 건, 한 개의 이상의 의상을 입었을 때는 뜻한다.  해결 코드(스포 주의)더보기import java.io.BufferedReaderimport java.io.InputStreamReaderfun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val .. 2024. 7. 26.
[Android, 내일배움캠프] 공부일지(2024-07-25) 오늘 공부한 내용 정리(2024년 7월 25일)  코드카타 문제풀이과일노리(Silver 5, 14493번, 마라톤)문제 내용 문제 풀이 방법각각의 확인봇이 A, B로 입력이 주어질 때, A는 확인봇이 나타나는 시간이고, B는 확인봇이 감시하는 시간이다.모든 확인봇의 감시를 피해 완주할 수 있을 최단 시간을 출력.  해결 코드(스포 주의)더보기import java.io.BufferedReaderimport java.io.InputStreamReaderfun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val case = readLine().toInt() var sec = 0 for (i in 0 until case) { .. 2024. 7. 25.
[Android, 내일배움캠프] 공부일지(2024-07-24) 오늘 공부한 내용 정리(2024년 7월 24일)  코드카타 문제풀이수열의 변화(Bronze 1, 1551번, 마라톤)문제 내용 문제 풀이 방법수열의 크기와 변환할 횟수가 주어질 때, 위 공식을 이용해 리스트를 변환시켜서 출력한다.  해결 코드(스포 주의)더보기import java.io.BufferedReaderimport java.io.InputStreamReaderfun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val (n, k) = readLine().split(" ").map { it.toInt() } var resultList = readLine().split(",").map { it.toInt() } for.. 2024. 7. 24.
728x90
반응형