본문 바로가기

알고리즘 풀이(JAVA)/leetcode

(25)
[leetcode] 1816. Truncate Sentence (java) [문제] 번역 : [문장은 선행 또는 후행 공백 없이 공백 하나로 구분되는 단어의 목록입니다. 각 단어는 대문자와 소문자로만 구성됩니다. 예를 들어, "Hello World", "HELLO", "hello world hello world"는 모두 문장입니다. 문장 s와 정수 k가 주어집니다. 첫 번째 k 단어만 포함하도록 s를 잘라내고 싶습니다. 잘라낸 후 s를 반환합니다.] → 공백을 기준으로 구분되는 문장을 처음부터 k까지의 길이만큼 잘라서 return하는 문제 예를 들어, "hello world hello world", k = 3 이라면 결과적으로 "hello world hello"를 반환하면 된다. [답안] class Solution { public String truncateSentence(St..
[leetcode] 1528. Shuffle String (java) [문제] 번역 : [문자열 s와 길이가 같은 정수 배열 인덱스가 주어집니다. 문자열 s는 ith 위치에 있는 문자가 셔플된 문자열의 indices[i]로 이동하도록 셔플됩니다. 해당 문자열 s를 반환하세요.] → 예시에서 보듯이, String s = "codeleet" / int[] indices = {4,5,6,7,0,2,1,3}일 경우 0번 인덱스에 해당하는 문자 "l", 1번 인덱스에 해당하는 문자 "e"...등등 반복하여 문자를 indices의 인덱스에 맞게 조합해주면 되는 문제 [답안] class Solution { public String restoreString(String s, int[] indices) { char[] ans = new char[indices.length]; for (in..
[leetcode] 1281. Subtract the Product and Sum of Digits of an Integer (java) [문제] 번역 : [정수 n이 주어졌을 때, 그 자릿수의 곱과 자릿수의 합의 차이를 반환합니다.] [답안] class Solution { public int subtractProductAndSum(int n) { int Multiplication = 1; // 자릿수의 곱 int sum = 0; // 자릿수의 합 while (n != 0) { Multiplication *= n % 10; sum += n % 10; n = n / 10; } return Multiplication - sum; } public static void main(String[] args) { Solution sol = new Solution(); int n = 234; int n2 = 4421; System.out.println(..
[leetcode] 1678. Goal Parser Interpretation (java) [문제] 번역 : [문자열 명령을 해석할 수 있는 Goal Parser를 가지고 있습니다. 명령은 "G", "()" 및/또는 "(al)"의 알파벳 순서로 구성되어 있습니다. Goal Parser는 "G"를 문자열 "G"로, "()"를 문자열 "o"로, "(al)"를 문자열 "al"로 해석합니다. 그런 다음 해석된 문자열은 원래 순서대로 연결됩니다. 문자열 명령이 주어지면 Goal Parser의 해석을 반환합니다.] → Goal Parser라는 장치를 이용해 "()"를 "o"로, "(al)"을 "al"로 변환시켜주면 되는 문제 나는 replace를 사용해서 풀이했다. [답안] class Solution { public String interpret(String command) { return command..
[leetcode] 1365. How Many Numbers Are Smaller Than the Current Number (java) [문제] 번역 : [배열 nums가 주어졌을 때, 각 nums[i]에 대해 배열에서 이보다 작은 숫자가 몇 개 있는지 구합니다. 즉, 각 nums[i]에 대해 j != i, nums[j] nums[j]) cnt++; // 만약 j값이 i보다 작으면 카운트++ } answer[i] = cnt; // 카운트 수 answer에 담기 } return answer; // answer 리턴 } public static void main(String[] args) { Solution sol = new Solution(); int[] nums = {8, 1, 2, 2, 3}; int[] nums2 = {6, 5, 4, 8}; int[] nums3 = {7, 7, 7, 7}; System.out.println(Array..
[leetcode] 1431. Kids With the Greatest Number of Candies (java) [문제] 번역 : [사탕을 가진 아이가 n명 있습니다. candies[i]는 아이가 가진 사탕의 개수를 나타내는 정수 배열 candies이며, 여분의 사탕의 개수를 의미하는 정수 extraCandies가 주어집니다. 결과는 길이 n의 부울 배열을 반환하며, 여기서 result[i]는 i번째 아이에게 각각 extraCandies를 준 후 모든 아이 중에서 가장 많은 수의 사탕을 갖게 되면 True를 반환하고, 그렇지 않으면 False를 반환합니다. 여러 어린이가 가장 많은 사탕을 가질 수 있다는 점에 주의 하여야 합니다.] → extraCandies를 주는 시점에서, i번째 아이가 '모든 아이 중에서 가장 많은 수의 사탕을 가지고 있으면' True를 반환하고, 그게 아니라면 false를 반환하면 되는 문제..
[leetcode] 2574. Left and Right Sum Differences (java) [문제] 번역 : [정수 배열 nums가 주어졌을 때, 정수 배열 answer을 구합니다 answer.length == nums.length answer[i] = |leftSum[i] - rightSum[i]| 입니다. 여기서 leftSum[i]는 배열 nums에서 인덱스 i의 왼쪽에 있는 요소의 합계입니다. 이러한 요소가 없으면 leftSum[i] = 0이 됩니다. rightSum[i]는 배열 nums에서 인덱스 i의 오른쪽에 있는 요소의 합계입니다. 이러한 요소가 없으면 rightSum[i] = 0이 됩니다. 배열의 답을 반환합니다.] → 왼쪽 / 오른쪽의 배열을 구해서 | 왼쪽 배열 - 오른쪽 배열 | 을 구하는 문제 [답안] import java.util.Arrays; class Solution ..
[leetcode] 2160. Minimum Sum of Four Digit Number After Splitting Digits (java) [문제] 번역 : [정확히 네 자리로 구성된 양의 정수 num이 주어집니다. num에서 찾은 자릿수를 사용하여 num을 두 개의 새 정수 new1과 new2로 나눕니다. new1과 new2에는 선행 0이 허용되며, num에서 발견되는 모든 자릿수를 사용해야 합니다. 예를 들어 num = 2932가 주어지면 2가 두 자리, 9가 한 자리, 3이 한 자리입니다. 가능한 쌍 [new1, new2] 중 일부는 [22, 93], [23, 92], [223, 9] 및 [2, 329]입니다. new1과 new2의 가능한 최소 합을 반환합니다.] → 4자리의 숫자들 중 만들 수 있는 쌍 중에서, 만들 수 있는 최소합을 구하는 문제 [답안 - 1차] : 속도 0ms / 메모리 42mb import java.util.Ar..