From d39b10716bf3fed527bb68a2b12b3e6be1dca5d1 Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Thu, 20 Aug 2026 22:30:47 +0900 Subject: [PATCH 1/2] 3992. Rearrange String to Avoid Character Pair --- ...range String to Avoid Character Pair.java" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/3992. Rearrange String to Avoid Character Pair.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/3992. Rearrange String to Avoid Character Pair.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/3992. Rearrange String to Avoid Character Pair.java" new file mode 100644 index 00000000..c16ae8fe --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/3992. Rearrange String to Avoid Character Pair.java" @@ -0,0 +1,22 @@ +/* + +1. 아이디어 : x가 아닌 숫자들을 먼저 붙이고, 이후 x개수만큼 더 붙인다 + +2. 시간복잡도 : O(N+N) + +3. 자료구조/알고리즘 : 완전탐색 + + */ +class Solution { + public String rearrangeString(String s, char x, char y) { + StringBuilder sb = new StringBuilder(); + int cnt = 0; + for(int i=0; i0) sb.append(x); + return sb.toString(); + } +} \ No newline at end of file From d9a9a0e21771c73870f57ee89d75fe0eee50acb2 Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Thu, 20 Aug 2026 22:33:00 +0900 Subject: [PATCH 2/2] 948. Bag of Tokens --- .../948. Bag of Tokens.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/948. Bag of Tokens.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/948. Bag of Tokens.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/948. Bag of Tokens.java" new file mode 100644 index 00000000..f6042eb8 --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/948. Bag of Tokens.java" @@ -0,0 +1,47 @@ +/* + +1. 아이디어 : face-up과 face-down의 규칙을 파악후, 그리디로 계산 + - face-up: powers 이하의 가장 낮은 점수 + - face-down: 가장 높은 점수 +2. 시간복잡도 : O(NlogN) + O(N) + +3. 자료구조/알고리즘 : 투포인터 , 정렬 (그리디) + + */ + +class Solution { + public int bagOfTokensScore(int[] tokens, int power) { + // face-up: power가 tokens[i] 이상이면 -> tokens[i]만큼 power를 잃고, 1점+ + // face-down: score가 1 이상이면, tokens[i] 만큼 powers를 얻고, 1점 감점 + // 가능한 가장 높은 score + + // face-up: powers 이상의 가장 낮은 점수 + // face-down: tokens중 가장 높은 점수 + + Arrays.sort(tokens); + + int l=0; + int r=tokens.length-1; + int score = 0; + int maxScore = 0; + + while(l<=r) { + // face-up + if(tokens[l]<=power) { + power-=tokens[l]; + score++; + l++; + maxScore = Math.max(score, maxScore); + } + // face-down + else if(score>0) { + power+=tokens[r]; + score--; + r--; + } + else break; + } + + return maxScore; + } +} \ No newline at end of file