본문 바로가기

분류 전체보기269

[Kotlin, B2] 백준 31215번 이상한 섞기 연산 이상한 섞기 연산(31215번)Bronze 2#애드 혹https://www.acmicpc.net/problem/31215 문제 내용  문제 접근1부터 n까지 시작하는 수열 B가 있다. n이 5면 1, 2, 3, 4, 5로 구성되는 수열이 된다.k까지의 수열이 있을 때, k의 약수에서 가장 큰 2의 제곱수가 l이다.예를 들어 k = 4일 때, 4의 약수는 1, 2, 4이고, 여기서 가장 큰 2의 제곱수인 l은 4이다(2의 2승). k가 3인 경우에는 3의 약수 1, 3에서 가장 큰 2의 제곱수는 2의 0승인 1이 된다.l을 구하고 나면 수열의 k번째 index와 l번째 index를 교환한다.아 과정이 문제에 언급된 이상한 섞기 연산이다. 이상한 섞기 연산을 통해 변경한 수열에서 1이 들어 있는 index를.. 2024. 8. 7.
[Kotlin, G5] 백준 1013번 Contact Contact(1013번)Gold 5#문자열 #정규 표현식https://www.acmicpc.net/problem/1013 문제 내용  문제 접근입력받은 숫자 코드가 (100+1+ | 01)+ 을 만족하는지 확인해야 한다.위의 예시에서 봤다시피, +기호는 특정 문자가 반복해서 나오는 것을 뜻한다.100+의 경우에는 100, 10000, 1000000... 와 같은 숫자들이 100+ 를 만족한다.(01)+의 경우에는 괄호 안의 숫자들이 반복돼서 나오는 것을 뜻한다.01, 0101, 010101... 와 같은 숫자들이 (01)+ 을 만족한다. 우리가 확인해야 할 패턴은 (100+1+ | 01)+은1. 10 다음에 0이 반복된다. 그리고 반복이 끝나면 1이 반복된다.2. 01로 끝난다.패턴 1 또는 2가 반복.. 2024. 8. 7.
[Android, 내일배움캠프] 공부일지(2024-08-06) 오늘 공부한 내용 정리(2024년 8월 6일)  코드카타 문제풀이IOIOI(Silver 1, 5525번)https://rkdrkd-history.tistory.com/180 [Kotlin, S1] 백준 5525번 IOIOIIOIOI(5525번)Silver 1#문자열 문제 내용  문제 접근첫 줄의 입력으로 O가 몇 개 들어 있는지 확인한다.예를 들어 O = 1이면 IOI, O = 3이면 IOIOIOI이 된다. 다음과 같은 문자열을 IOI 문자열이라고 부르겠rkdrkd-history.tistory.com  네트워크(프로그래머스, Lv.3)https://rkdrkd-history.tistory.com/181  내일배움캠프 특강주특기 심화 완전 정복 특강 #2코루틴(Coroutine)코루틴: 비동기 작업(네트워.. 2024. 8. 6.
[Kotlin, Lv.3] 프로그래머스 네트워크 네트워크Level 3https://school.programmers.co.kr/learn/courses/30/lessons/43162 문제 내용  문제 접근각 컴퓨터 간 네트워크가 형성되어 있으면 1이고 아니면 0으로 입력된다.n의 값만큼의 길이를 가지는 n * n의 2차원 배열이 입력으로 주어진다.배열의 첫 번째 index가 각 컴퓨터에 대한 다른 컴퓨터와의 연결 상태를 볼 수 있다. 입력 예시 1에서 [[1, 1, 0], [1, 1, 1], [0, 1, 1]]가 입력값인데, 위 리스트의 첫 번째 값인 [1, 1, 0]은 0번째 컴퓨터에 연결되어 있는 컴퓨터들을 뜻한다.0번째 index의 값인 1은 0번 컴퓨터 자기 자신이기 때문에 무조건 1이 들어온다. 다음 값인 index 1의 값이 1인데 이 뜻은.. 2024. 8. 6.
[Kotlin, S1] 백준 5525번 IOIOI IOIOI(5525번)Silver 1#문자열 문제 내용  문제 접근첫 줄의 입력으로 O가 몇 개 들어 있는지 확인한다.예를 들어 O = 1이면 IOI, O = 3이면 IOIOIOI이 된다. 다음과 같은 문자열을 IOI 문자열이라고 부르겠다.IOI 문자열이 3번째 줄에 입력되어 있는 문자열에 몇 개가 포함되어 있는지 구해야 한다.IOI 문자열이 IOIOI이고, 문자열이 IIOIOIOIIOO일 때는, 1. IIOIOIOIIOO 2. IIOIOIOIIOO 로 총 2가지의 경우를 구할 수 있다. 겹치는 경우까지 생각해야 한다. IOI문자열은 처음에 I로 시작하고 쭉 계속 OI가 반복된다는 규칙이 있다.O = 1일 때 IOI,O = 3일 때 IOIOIOI 인 것처럼.이를 이용해 처음에 시작 문자가 I로 시작하고.. 2024. 8. 6.
[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.
728x90