알고리즘

문제 https://leetcode.com/problems/minimum-depth-of-binary-tree/description/ 주어진 이진트리에서 트리의 최소 깊이를 구하여라. 최소 깊이는 루트 노드부터 가장 가까운 리프 노드까지 내려가는 최단 거리에 있는 노드의 수이다. Note: 리프 노드는 자식 노드를 가지고 있지 않다. 풀이 1. BFS - 너비 우선 탐색 fun minDepth(root: TreeNode?): Int { if(root == null) return 0 val q = ArrayDeque() q.add(root) var depth = 1 while (q.isNotEmpty()) { val curSize = q.size repeat(curSize) { val curNode = q..
문제 https://leetcode.com/problems/valid-palindrome/description/ Palindrome 문구는 주어진 문자열에서 모든 대문자를 소문자로 바꾼 후, 영숫자가 아닌 문자들을 지웠을 때, 앞뒤로 똑같이 읽힌다. Alphanumeric(영숫자)는 문자와 숫자를 포함한다. 풀이 1. 코틀린 확장함수를 맘껏 활용한 풀이 fun isPalindrome(s: String): Boolean = s.lowercase().filter { it.isLetterOrDigit() }.let { it == it.reversed() } 단 두줄로 문제를 풀 수 있었다. 다만 leetcode 코틀린 버전이 낮아서인지 Deprecated된 함수를 사용하여야 함! (toLowerCase) 시간..
문제 주어진 정수 n이 있을 때, 조건을 만족하는 answer 배열(1-indexed)을 반환하라. - i가 3 과 5 로 나누어진다면, answer[i] == "FizzBuzz" - i가 3 으로 나누어진다면, answer[i] == "FizzBuzz" - i가 5 로 나누어진다면, answer[i] == "FizzBuzz" - 위 조건 중 어느것도 만족하지 못하는 경우, answer[i] == i (i는 문자열) 풀이 기본 조건문을 활용하는 문제 더보기 class LT_412_FizzBuzz { fun fizzBuzz(n: Int): List { val answer = List(n + 1) { i -> if (i % 15 == 0) "FizzBuzz" else if (i % 3 == 0) "Fizz"..
문제 (Gold 5) https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 풀이 문제가 참,, 여러모로 이해하기 어려웠다,, 다른것보다 갑자기 출력하라고 나온 단어인 '단계'가 무엇인지 예제를 몇개 돌려보고야 알았던 것 같다. 여기선 1-4의 루틴을 한 단계라고 하고, 종료되기까지 총 몇번의 단계를 거쳤는지를 구하면 된다. 처음엔 일의 순서로 나와있는 1,2,3,4가 한 단계를 나타내는 줄 알았고, 예제1의 출력이 '2'번 단계..
점이
'알고리즘' 태그의 글 목록 (2 Page)