본문 바로가기

Kotlin82

[Kotlin, B1] 백준 16433번 주디와 당근농장 주디와 당근농장(16433번)Bronze 1#구현https://www.acmicpc.net/problem/16433 문제 내용  문제 접근정사각형으로 이루어진 밭의 넓이인 n과 당근이 심어져 있는 위치 r, c가 순서대로 주어진다.당근을 밭에 심어야 하는데 조건이 있다.당근이 심어져 있는 위치에 위, 아래, 오른쪽, 왼쪽에 다른 당근이 심어져 있으면 안 된다.예제 1을 예로 들면 다음과 같이 당근이 심어져야 한다.위 사진과 같이 기존에 심어져 있던 당근을 기준으로 지그재그로 당근을 심어야 한다.첫 당근의 위치에 맞게 다른 당근의 위치를 구하려면 조건이 필요하다. 우선 r부터 봐보자. 지그재그가 되려면, 현재 당근이 심어져 있는 위치와 심을 당근의 거리 차이가 짝수면 똑같은 x위치에 당근을 심어도 된다. .. 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.
[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.
[Kotlin, S3] 백준 31409번 착신 전환 소동 착신 전환 소동(31409번)Silver 3#그래프 이론 #애드 혹 #해 구성하기 #함수형 그래프 문제 내용  문제 접근전화기가 주어졌을 때, 착신 전환을 해서 모든 전화기를 먹통으로 만드는 최소의 경우를 구해야 하는 문제이다.문제 본문의 예시를 들면, A => B, B => C, C => A 순으로 전화를 연결하고 있다.3개의 전화기가 무한 사이클을 돌고 있다는 것을 알 수 있다.전화기 여러 개를 무한 사이클을 돌리는 방법은 다양하다.문제의 입력 예제만 봐도 알 수 있다.입력 예제 2는 다음과 같이 입력을 받는다.52 1 5 3 4위 입력값을 그래프로 나타내면 아래와 같다.그래프의 전화가 서로 이어져서 무한한 사이클을 형성했다. 이 경우에는 이미 먹통 상태이므로, 바꿔주지 않아도 된다. 각 전화기에 연.. 2024. 8. 2.
[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.
[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.
728x90