본문 바로가기

728x90

전체 글

(229)
[알고리즘][KOTLIN] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1. 철수와 영희의 각각의 카드 배열의 최대 공약수(GCD) 를 재귀를 이용하여 구한다. 2. 1번에서 구해진 철수와 영희의 최대 공약수가 조건에 따라 서로의 카드 숫자를 나눌 수 있는 지 확인하여 나눠지는 경우 최대 공약수 값을 0으로 저장한다. 3. 철수와 영희의 최대 공약수 중 최대 값을 구한다. class Solution { fun solution(arrayA: IntArray..
[알고리즘][KOTLIN] 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1. 입력으로 주어지는 귤의 크기를 담은 배열에서 각각의 크기가 몇 개씩인 지를 저장하는 배열을 선언한다. 이때 귤의 크기 원소가 1부터 10,000,000 까지 제공되기 때문에 배열을 10,000,001 크기로 선언한다. 2. 입력으로 주어지는 귤의 크기 배열의 값을 Index 로 하여 1번에서 선언한 배열에 저장한다. 이때 개수를 저장하기 위해서 저장된 배열의 값에 1을 더해서 저..
[알고리즘][KOTLIN] 점찍기 https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1. 두 좌표 간의 거리를 구하는 공식을 이용 한다. X^2 + Y^2 = D^2 2. X, Y 를 k 만큼 증가하여 탐색한다. 3. 이때 이중 For 문으로 탐색을 할 경우 시간 초과가 발생한다. 4. 1번의 거리 식에서 Y^2 = D^2 - X^2 이 된다. 5. 4번에서 나온 Y값 중 k 배수가 될 수 있는 개수를 구한다. 코드 class Solution { fun solutio..
[알고리즘][KOTLIN] 선택 정렬 정의 선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 코드 fun main(args: Array) { // INPUT : [42, 32, 24, 60, 15] // OUTPUT : [15, 24, 32, 42, 60] val result = selectedSort(intArrayOf(42, 32, 24, 60, 15)) result.forEach { r -> print("$r ") } } private fun selectedSort(arr: IntArray): IntArray { /..
[알고리즘] 버블 정렬 정의 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 시간 복잡도 O(n^2)
[알고리즘][KOTLIN] 구간 합 구간 합 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 0번째부터 i 번째까지의 합을 구하는 공식 - S[i] = A[0] + A[1] + A[2] + … + A[i - 1] + A[i - 2] - 배열 A [15, 13, 10, 7, 3, 12] - 합 배열 S [15, 28, 38, 45, 48, 60] S[i] = S[i - 1] + A[i] i번째부터 j번째까지의 합을 구하는 공식(구간 합) S[j] - S[i - 1] 배열이 변경될 경우 -> 세그먼트 트리를 사용한다. 문제 주어진 배열에서 k 개수 만큼 연속된 원소를 추출하여 새로운 배열을 만들었을 때 만들어진 새로운 배열 중 최대값을 구하여라 입력 배열 : [10, -4, 3, 1, 5, 6, -35, 12..
[BOJ][25305] 커트라인 https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 문제 풀이 1. 주어진 입력을 MutableList 에 저장한다. 2. 1번에서 저장된 List 를 내림차순으로 정렬한다. Kotlin - Collection 에서 제공하는 sortDescending api 를 사용한다. 3. 2번에서 정렬된 리스트에서 [k - 1] 번째 index 값을 출력한다. 코드 import java.io.* import java.util.* fun main(args: Array) { val br = BufferedReader(InputStr..
[BOJ][25305] 커트라인 https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 문제 풀이 1. 주어진 입력을 MutableList 에 저장한다. 2. 1번에서 저장된 List 를 내림차순으로 정렬한다. Kotlin - Collection 에서 제공하는 sortDescending api 를 사용한다. 3. 2번에서 정렬된 리스트에서 [k - 1] 번째 index 값을 출력한다. 코드 import java.io.* import java.util.* fun main(args: Array) { val br = BufferedReader(InputStr..