Algorithm
-
[Algo Rhythm🕺💃] 프로그래머스 - 숫자 게임Algo Rhythm🕺💃/Programmers 2022. 9. 24. 00:59
💫문제 분석 A 팀원들이 부여받은 수가 출전 순서대로 나열되어있는 배열을 A, i번째 원소가 B팀의 i번 팀원이 부여받은 수를 의미하는 배열을 B라고 하자. 이때 두 배열의 원소 ai,bi, 배열의 크기 L은 아래와 같이 정의할 수 있다. 1≤L=|A|=|B|≤105 1≤ai,bi≤109(ai∈A,bi∈B,i∈[1,L]) A팀은 출전 순서가 이미 고정되어 있다. 따라서 B팀이 최대 승점을 얻기 위해서는 각 ai를 패배할 수 있는 즉, ai<bi 조건을 만족하는 가장 작은 bi와 매칭하..
-
[Algo Rhythm🕺💃] BOJ 2529 - 부등호Algo Rhythm🕺💃 2021. 7. 7. 22:23
💫문제 분석 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열을 A라고 하자. 그리고 A의 i번째 순서에 있는 부등호를 A[i] (1≤i≤k), 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자가 들어갈 자리를 ai (i∈{x | 1≤x≤(k+1), x∈N})라고 하자. 예를 들어, 아래와 같은 A에 대하여 A[i]들과 ai들은 다음과 같다. 이때 ai는 다음과 같은 네가지 조건이 있다. i≠j일 때, ai≠aj ai∈{x | 0≤x≤9,x∈N} A[i]가 '>'이면, ai>ai+1 이다. A[i]가 '
-
[Algo Rhythm🕺💃]BOJ 14889 - 스타트와 링크Algo Rhythm🕺💃/BOJ 2021. 6. 18. 23:44
문제 분석 스타트팀을 Tstart, 링크팀을 Tlink 그리고 두 팀의 능력치를 각각 Sstart,Slink라고 하자. 이때 각 팀에 속하는 사람들의 수는 두 팀 모두 축구를 하는 N (4≤N≤20)명의 절반인 N/2 명이다. 문제에서 요구하는 min(|Sstart−Slink|)를 구하기 위한 가장 직관적인 방법은 (Tstart,Tlink)의 모든 조합을 구한 뒤 각 조합의 |Sstart−Slink|을 구하고 그 중 최소값을 찾는 것이다. 모든 조합을 구해야 하는 문제들은 주로 'backtracking'을 사용한다. 이 문제도 마찬가지로 backtracking을 사용하여 해결했다. 문제 풀이 ..
-
[Algo Rhythm🕺💃]BOJ 1620 - 정상 회담2Algo Rhythm🕺💃/BOJ 2021. 3. 12. 15:05
문제 분석 문제를 분석하는 효과적인 방법들 중 하나는 그림으로 표현해보는 것이다. 이 문제에서 N = 0, 2, 4, 6 일때 완벽하게 악수하는 경우들과 그 수를 그림으로 표현하면 아래와 같다. (이때 각 국가의 대표는 노드로 표현했다.) 그림에서 검은색 노드와 흰색 노드가 연결된 선분을 기준으로 왼쪽 영역을 l, 오른쪽 영역을 r라고 하자. 그리고 a개의 노드들이 완벽하게 악수할 수 있는 경우의 수를 f(a)라고 하자. 그렇다면 N =0, 2, 4, 6일때 완벽하게 악수할 수 있는 경우의 수는 아래와 같은 규칙이 있음을 알 수 있다. 이 규칙을 점화식으로 표현하면 다음과 같다. $f(N)= \begin{cases} 1, & if\ n = 0\\ \sum_{i=0}^{N-2} f(i) \t..
-
[Algo Rhythm🕺💃] LeetCode 720. Longest Word in DictionaryAlgo Rhythm🕺💃/LeetCode 2020. 9. 4. 01:05
📚 Problem description Given a list of strings words representing an English Dictionary, find the longest word in words that can be built one character at a time by other words in words. If there is more than one possible answer, return the longest word with the smallest lexicographical order. If there is no answer, return the empty string. Example 1: Input: words = ["w","wo","wor","worl", "world..
-
[Algo Rhythm🕺💃] LeetCode 208. Implement Trie (Prefix Tree)Algo Rhythm🕺💃/LeetCode 2020. 9. 3. 16:04
📚 Problem description Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // returns true trie.search("app"); // returns false trie.startsWith("app"); // returns true trie.insert("app"); trie.search("app"); // returns true Note: You may assume that all inputs are consist of lowercase letters a-z. All inputs ar..
-
[Algo Rhythm🕺💃] BOJ 17521. Byte coinAlgo Rhythm🕺💃/BOJ 2020. 8. 24. 13:48
📚 문제 설명 국제자본부동산회사(ICPC)는 바이트 코인(Byte Coin)에 자금을 투자하고 있다. 바이트 코인은 김박사가 만든 가상 화폐이다. 실제로는 바이트 코인 가격을 예상할 수 없지만 이 문제에서는 바이트 코인 가격 등락을 미리 정확히 예측할 수 있다고 가정하자. 우리는 1일부터 n일까지 n일 동안 그림 1과 같이 바이트 코인의 등락을 미리 알 수 있으며 우리에게는 초기 현금 W가 주어져 있다. 그림 1의 빨간색 네모는 해당 일자의 바이트 코인 가격을 나타낸다. 매일 바이트 코인을 매수하거나 매도할 수 있다고 하자. 다만 바이트 코인 하나를 나누어 매도하거나 매수할 수는 없다. 우리는 n일 날 보유하고 있는 모든 코인을 매도할 때 가지고 있는 현금을 최대화하고 싶다. 그림 1. 10 일간 바이트..
-
[Algo Rhythm🕺💃] BOJ 17520. Balanced StringAlgo Rhythm🕺💃/BOJ 2020. 8. 24. 13:36
📚 문제 설명 0과 1로 이루어진 이진 문자열 0101101은 0과 1의 개수의 차이가 1 이하이다. 뿐만 아니라, 첫 번째 문자를 포함하는 모든 부분 문자열 0, 01, 010, 0101, 01011, 010110, 0101101 모두 0과 1의 개수의 차이가 1 이하이다. 이와 같이, 이진 문자열 중에서 첫 번째 문자를 포함하는 모든 부분 문자열의 0과 1의 개수의 차이가 1이하인 문자열을 균형잡힌 문자열이라 부른다. 문자열 자체도 자신의 부분 문자열이다. 양의 정수 n 이 주어질 때, 길이가 n 인 이진 문자열 중에서 균형잡힌 문자열의 수를 구하는 프로그램을 작성하시오. 예를 들어, n = 3인 경우에는 010, 011, 100, 101 네 개의 문자열이 균형잡힌 문자열이다. 입력 입력은 표준입력을..