๐ 1. ๋ฌธ์ ์ค๋ช
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๐ก 2. ํ์ด ๊ณผ์
์ด ๋ฌธ์ ๋ queue ๋ก ํธ๋ ๋ฌธ์ ์ด๋ค (์ด๊ฑธ ์ ์ถํ ์ ์๋ ๋ถ๋ถ)
- card1๊ณผ card2๋ ๋ฌด์กฐ๊ฑด ์๋ถํฐ ์ฌ์ฉํด์ผ ํจ
- ์์๋ฅผ ๋ค๋ฐ๊ฟ ์ ์์
์ด ๋ ๋ฌธ์ฅ์ FIFO ๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ๋ค.
๊ทธ๋์ card1, card2, goal ์ ํ๋ฅผ ์ฌ์ฉํด์ ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ค.
- card1๊ณผ card2, goal์ ํ๋ก ๋ณํํ๋ค.
- goal์ front์ (card1 ๋๋ card2)์ front์ ๊ฐ์ ๋น๊ตํ๋ค.
- ์ฌ์ฉํ ์ ์๋ ์นด๋๊ฐ ์๋๊ฐ? (๊ฐ์ด ๊ฐ์ผ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ)
- Yes์ด๋ฉด ํด๋น ํ์ goal์์ ๊ฐ๊ฐ poll, ๊ทธ๋ ์ง ์์ผ๋ฉด No๋ฅผ ๋ฐํํ๋ค.
โ ์ ์ถ๋ ฅ ์ ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ - Yes ๋ฐํ
โ ์ ์ถ๋ ฅ ์ ๋๋ฒ์งธ์ ๊ฒฝ์ฐ - No ๋ฐํ
โญ 3. ์ ๋ต์ฝ๋
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
// cards1, cards2, goal์ Deque๋ก ๋ณํํ๊ธฐ
Deque<String> cardsDeque1 = new ArrayDeque<>(Arrays.asList(cards1));
Deque<String> cardsDeque2 = new ArrayDeque<>(Arrays.asList(cards2));
Deque<String> goalDeque = new ArrayDeque<>(Arrays.asList(goal));
// goalDeque์ด ๋น ๋๊น์ง ๋ฐ๋ณต
while (!goalDeque.isEmpty()) {
String target = goalDeque.poll(); // goal์ ๋งจ ์ ์์ ๊ฐ์ ธ์ค๊ธฐ
// cards1 ๋๋ cards2์ front์ ์๊น ๊บผ๋ธ goal์ ๋งจ ์ ์์๊ฐ ๊ฐ์์ง ๋น๊ต
if (!cardsDeque1.isEmpty() && cardsDeque1.peek().equals(target)) {
cardsDeque1.poll(); // cards1์์ ํด๋น ์นด๋๋ฅผ ๋นผ๊ธฐ
} else if (!cardsDeque2.isEmpty() && cardsDeque2.peek().equals(target)) {
cardsDeque2.poll(); // cards2์์ ํด๋น ์นด๋๋ฅผ ๋นผ๊ธฐ
} else {
return "No"; // ๊ฐ์ ์นด๋๊ฐ ์์ผ๋ฉด "No" ๋ฆฌํด
}
}
return "Yes"; // goal์ ๋ ๋ฌธ์ฅ์ ์์ฑํ ์ ์์ผ๋ฉด ์ฑ๊ณต
}
}
๐๐ป ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
์ด๊ฑด chatGPT์์ ์ฐพ์๋ณด๋ค๊ฐ ๊ฐ์ ธ์จ ์ฝ๋์ด๋ค.
goal์ ๊ตณ์ด goalDeque์ ๋ง๋ค ํ์ ์์ด goal์ ๊ทธ๋ฅ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ํตํด for-each ๋ฌธ์ผ๋ก ์ํํ๋ ๊ฒ์ด ์ฝ๋๋ ๊ฐ๋จํ๊ณ ํจ์จ๋ ์ข๋ค.
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
Deque<String> cardsDeque1 = new ArrayDeque<>(Arrays.asList(cards1));
Deque<String> cardsDeque2 = new ArrayDeque<>(Arrays.asList(cards2));
// goal ๋ฐฐ์ด์ ์ํํ๋ฉด์ ๋น๊ต
for (String target : goal) {
if (!cardsDeque1.isEmpty() && cardsDeque1.peek().equals(target)) {
cardsDeque1.poll();
} else if (!cardsDeque2.isEmpty() && cardsDeque2.peek().equals(target)) {
cardsDeque2.poll();
} else {
return "No";
}
}
return "Yes"; // ๋ชจ๋ ๋ชฉํ ๋ฌธ์์ด์ ๋ง๋ค ์ ์์ผ๋ฉด ์ฑ๊ณต
}
}
๐ฆ 4. ๊ฐ์ ์ ํ ๋ฌธ์
[๋ฐฑ์ค] (Java) ์์ธํธ์ค ๋ฌธ์ (ํ)
๐ 1. ๋ฌธ์ ์ค๋ช โ ๋ฌธ์ ์ด๋ฌธ์ ๋ ์ ๋์ธ ์ญ์ฌ๊ฐ ํ๋ผ๋น์ฐ์ค ์์ธํธ์ค๊ฐ ๋ง๋ ๋ฌธ์ ์ด๋ค. N๋ช ์ ์ฌ๋์ด ์ ํํ๋ก ์ ์๋ค. ๊ฐ ์ฌ๋์ 1๋ถํฐ N๊น์ง ๋ฒํธํ๋ฅผ ๊ฐ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ์ซ์ K๊ฐ ์ฃผ
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์ฃผ์๊ฐ๊ฒฉ (์คํ/ํ)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์์ด์คfor๋ฌธํ์ฌ ์ธ๋ฑ์ค์ ์๋ ์์๊ณผ ์ดํ ๋ชจ๋ ๊ฐ์ ๋น๊ตํ๋ฉด์ ํ์ฌ ์์๊ฐ ๋น๊ตํ๊ณ ์๋ ์์๋ณด๋ค ์ปค์ง๋ฉด break;๋ฅผ ๊ฑธ์ด์ค๋ค.๊ทธ ์ ๊น์ง๋ answer[i]++์ ํด ์ค๋ค.
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (์คํ/ํ)
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์ Queueํธ๋ญ ์ง์ ๋ก์ง: ๋ค๋ฆฌ์ ๋งจ ์ ํธ๋ญ์ด ๋๊ฐ๊ณ ์๋ก์ด ํธ๋ญ์ด ๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ์ ์๋์ง ํ์ธํ ํ ๋ค๋ฆฌ์ ์ถ๊ฐ์ด๋์๊ฐ: ํธ๋ญ์ด ๋ค๋ฆฌ ์์ ์ค๋ฅด๋ฉด ๋งค 1์ด๋ง๋ค
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํ๋ก์ธ์ค ๋ฌธ์ ํ์ด (์คํ/ํ)
1. ๋ฌธ์ ์ค๋ช ์์ #1๋ฌธ์ ์ ๋์จ ์์ ๊ฐ์ต๋๋ค. ์์ #26๊ฐ์ ํ๋ก์ธ์ค [A, B, C, D, E, F]๊ฐ ๋๊ธฐ ํ์ ์๊ณ ์ค์๋๊ฐ [1, 1, 9, 1, 1, 1] ์ด๋ฏ๋ก [C, D, E, F, A, B] ์์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ A๋ 5๋ฒ์งธ๋ก ์ค
awesomepossum.tistory.com
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๊ธฐ๋ฅ๊ฐ๋ฐ (์คํ/ํ)
1. ๋ฌธ์ ์ค๋ช ํ๋ก๊ทธ๋๋จธ์ค ํ์์๋ ๊ธฐ๋ฅ ๊ฐ์ ์์ ์ ์ํ ์ค์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ ์ง๋๊ฐ 100%์ผ ๋ ์๋น์ค์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋, ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ ๊ธฐ๋ฅ์ด
awesomepossum.tistory.com
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌํธ์ฝ๋] LeetCode Longest Common Prefix (Easy) in Java (14) | 2025.02.22 |
---|---|
[๋ฐฑ์ค] (Java) ์์ธํธ์ค ๋ฌธ์ (ํ) (7) | 2025.02.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์์๋์งํ (ํธ๋ฆฌ) (13) | 2025.02.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ ๊ฒ์ (์คํ) (9) | 2025.02.18 |
[์ฝ๋ฉํ ์คํธ] (Java) ์ญ์ง์๋ฅผ ์ด์ง์๋ก ๋ณํํ๊ธฐ (์คํ) (17) | 2025.02.17 |