🔒 문제 💡 생각의 흐름 (1) 아, 유클리드 호제법 GCD (최대공약수) 함수 작성해서 최소공배수 바로 구해보리기 하면 되겠군. 최대공약수 공식 알고리즘은 요기서 최대공약수 알고리즘 Greatest Common Divisor Problem 임의의 자연수 n, m (단, n > m) 에 대한 최대공약수? Input 자연수 n, m Output Largest D s.t n % D and m % D == 0 s.t: Search That의 약자. [1] n-gcd 가장 생각하기 쉬운.. m-falcon.tistory.com (2) 오름 정렬해서 쪼꼬만 애들끼리 만든 최소공배수로 뒷놈들 다 검사해보는 식으로 해야겠군 🔑풀이 (Kotlin) class Solution { fun gcd (a: Int, b: In..
Kotlin
문제 실수 대놓고 서로 다른 '조합'의 수를 구하는 문구에서 기계적으로 Combination을 떠올렸다. 옷의 갯수 까지의 모든 Combination 조합을 합하면 답이 도출되지 않을까? 하고 생각했다. 예를 들어 위의 예제대로 하면 얼굴(2) - 상의(1) - 하의(1) - 겉옷(1) 5C1 + 5C2 - 1(얼굴 2개만 뽑는 경우의수 ) + 5C3 - 3 (얼굴 2개 + 나머지 1조합 경우의수) + 5C4 - 3 (얼굴 2개 + 2개 조합 경우의수) ------ 이런 식으로하니 일반식이 도출되지 않았다. 아이디어 조합의 수를 구하라 했지만 옷을 하나이상 걸친 모든 경우의 수를 구하는 문제였다. 각 옷의 종류마다 옷을 입는 경우의 수를 나눠서 표현하면 얼굴 -> 입지 않음 , 동그란 안경 , 검정 선글..
1. 문제 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr ⭐ 카카오 2019 블라인드 공개채용 기출문제 2. 실수 loop을 2번 중첩했다가 시간초과로 75점을 맞았다. loop 2중첩 시나리오는 다음과 같았다. 아이디 - 닉네임이 매핑되어야 한다는 사실로부터 (1) 중복을 제거한 아이디 목록 Set (집합) (2) Set element 수 == 회원수 만큼 loop (3) (2) loop 안에서 record 로그 수만큼 또 loop (2) + (3) => Time Complexity O(N^2) => 시간..
문제 아이디어 정점, 간선 단어를 보자마자 '그래프'? 연결 요소 == 이어진 그래프를 의미한다. BFS or DFS를 떠올린다. 나는 BFS를 선택했다. 모든 노드(정점) 목록을 원소로 갖는 집합(Set)을 두고 한 번의 BFS마다 생기는 그래프를 전체 집합에서 제외시키는 방식으로 풀이했다. (전체 집합이 공집합이 될 때까지 Loop) 실수 undirected graph (무방향 그래프) 인것을 확인하지 않고 단방향 연결 리스트로만 체크하다가 틀려버렸다. 구현 [Graph.kt] import java.util.* import kotlin.collections.ArrayList class Graph(private val vertexNumber: Int) { val vertexSet : Set = (1 ...
문제 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 해결 방법 (1) 키패드간 거리가 '직선'이 아니라 상하좌우로 제한됨 -> X,Y 좌표계 도입! (2) [1,4,7]-> L, [3,6,9] -> R 고정이고 [2,5,8,0] 만 거리 계산이 필요함. // 거리가 같다면 hand 값 따지기 (3) 입력값은 모두 '숫자'지만 초기 왼,오른손은 '*', '#' character -> 어차피 정수로 변..
When to use? (클래스 단위) 배열 요소의 총합, 최대, 최소값을 구하려 할 때. Why? 이전까지는 For loop을 돌려서 총합을 구했음. selector 를 지정하여 간결하게 계산 가능. OrderItem.kt data class OrderItem(val itemName: String, var price : Int, var count : Int) { } main.kt (기존 방법) fun main(args: Array) { val orderArray = arrayOf(OrderItem("Cake", 15000, 3), OrderItem("Coffee", 1500, 10), OrderItem("Tea", 2000, 10)) var sum:Int = 0 for(i in orderArray) {..