์ฝ๋๋ ์์ด ๋จ์ด๊ฐ ์ ํ ์นด๋ ๋ญ์น ๋ ๊ฐ๋ฅผ ์ ๋ฌผ๋ก ๋ฐ์์ต๋๋ค. ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ์นด๋์ ์ ํ ๋จ์ด๋ค์ ์ฌ์ฉํด ์ํ๋ ์์์ ๋จ์ด ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฒซ ๋ฒ์งธ ์นด๋ ๋ญ์น์ ์์๋๋ก ["i", "drink", "water"], ๋ ๋ฒ์งธ ์นด๋ ๋ญ์น์ ์์๋๋ก ["want", "to"]๊ฐ ์ ํ์์ ๋ ["i", "want", "to", "drink", "water"] ์์์ ๋จ์ด ๋ฐฐ์ด์ ๋ง๋ค๋ ค๊ณ ํ๋ค๋ฉด ์ฒซ ๋ฒ์งธ ์นด๋ ๋ญ์น์์ "i"๋ฅผ ์ฌ์ฉํ ํ ๋ ๋ฒ์งธ ์นด๋ ๋ญ์น์์ "want"์ "to"๋ฅผ ์ฌ์ฉํ๊ณ ์ฒซ ๋ฒ์งธ ์นด๋๋ญ์น์ "drink"์ "water"๋ฅผ ์ฐจ๋ก๋๋ก ์ฌ์ฉํ๋ฉด ์ํ๋ ์์์ ๋จ์ด ๋ฐฐ์ด์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด cards1
, cards2
์ ์ํ๋ ๋จ์ด ๋ฐฐ์ด goal
์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, cards1
๊ณผ cards2
์ ์ ํ ๋จ์ด๋ค๋ก goal
๋ฅผ ๋ง๋ค ์๋ค๋ฉด "Yes"๋ฅผ, ๋ง๋ค ์ ์๋ค๋ฉด "No"๋ฅผ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
cards1 | cards2 | goal | result |
---|---|---|---|
["i", "drink", "water"] | ["want", "to"] | ["i", "want", "to", "drink", "water"] | "Yes" |
["i", "water", "drink"] | ["want", "to"] | ["i", "want", "to", "drink", "water"] | "No" |
๋ณธ๋ฌธ๊ณผ ๊ฐ์ต๋๋ค.
cards1
์์ "i"๋ฅผ ์ฌ์ฉํ๊ณ cards2์์ "want"์ "to"๋ฅผ ์ฌ์ฉํ์ฌ "i want to"๊น์ง๋ ๋ง๋ค ์ ์์ง๋ง "water"๊ฐ "drink"๋ณด๋ค ๋จผ์ ์ฌ์ฉ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฌธ์ฅ์ ์์ฑ์ํฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ "No"๋ฅผ ๋ฐํํฉ๋๋ค.
3๊ฐ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ ธ ์๊ณ , goal
๋ฐฐ์ด๊ณผ ๋๋จธ์ง ๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋น๊ตํ๋ฉด ๋๋ ๋ฌธ์ ๋ผ, ๊ฐ๊ฐ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ ํ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
int cards1Index = 0;
int cards2Index = 0;
int goalIndex = 0;
for (goalIndex = 0; goalIndex < goal.length; goalIndex++) {
// ์นด๋1์ ๋ค์ด ์๋ค๋ฉด
if (cards1Index < cards1.length && goal[goalIndex].equals(cards1[cards1Index])) {
cards1Index++;
}
// ์นด๋2์ ๋ค์ด ์๋ค๋ฉด
else if (cards2Index < cards2.length && goal[goalIndex].equals(cards2[cards2Index])) {
cards2Index++;
}
else {
answer = "No";
}
}
return answer;
}
}
๊ทธ๋์ ๊ฐ๊ฐ์ ์ธ๋ฑ์ค cards1Index
, cards2Index
, goalIndex
๋ฅผ ๋ง๋ค์ด ์ฃผ์๋ค.
์ด์ , ๋ ๊ฐ์ ์นด๋ ๋ญ์น์์ ์์๋๋ก ํ ์ฅ์ฉ ํ์ธํด goal
์ ๋ฌธ์ฅ์ ๋ง๋ค ์ ์๋ ์ง ํ์ธ์ ํด์ผ ํ๋ค.
์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด, goalIndex
๋ฅผ 0๋ถํฐ ํ๋์ฉ ์ฎ๊ฒจ๊ฐ๋ฉฐ, ๋ ์นด๋ ๋ญ์น์์ ๊บผ๋ธ ์นด๋ ์ค ์ผ์นํ๋ ์ง ํ์ธ์์ผ ๋ณด๋๋ก ํ์๋ค.
if (cards1Index < cards1.length && goal[goalIndex].equals(cards1[cards1Index])) {
cards1Index++;
}
else if (cards2Index < cards2.length && goal[goalIndex].equals(cards2[cards2Index])) {
cards2Index++;
}
๋ง์ฝ cards1
๋ญ์น์์ ๊ฐ์ ๋ฌธ์์ด์ ๋ฐ๊ฒฌํ๋ค๋ฉด, cards1
์ ์ธ๋ฑ์ค๋ฅผ 1 ์ฆ๊ฐ์์ผ ํด๋น ์นด๋๋ ์ด๋ฏธ ํ์ธํ์์ ๊ตฌํํด ์ฃผ์๊ณ , card2
์ ๊ฒฝ์ฐ๋ ๋์ผํ๊ฒ ๊ตฌํํด ์ฃผ์๋ค.
๋ง์ง๋ง์ผ๋ก ๋ ์ค ์ด๋ ์กฐ๊ฑด๋ฌธ์๋ ํด๋นํ์ง ์๋๋ค๋ฉด, goal
์ ๋ฌธ์ฅ์ ๋ง๋ค ์ ์๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์, ์ด ๊ฒฝ์ฐ์๋ answer
์ No๋ฅผ ์ ์ฅํ๋๋ก ํด์ค์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค๐
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋, ArrayList๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
ArrayList cards1List = new ArrayList(Arrays.asList(cards1));
ArrayList cards2List = new ArrayList(Arrays.asList(cards2));
for(int i=0; i < goal.length; i++) {
if( cards1List.size() > 0 && goal[i].equals(cards1List.get(0))){
cards1List.remove(0);
} else if (cards2List.size() > 0 && goal[i].equals(cards2List.get(0))){
cards2List.remove(0);
} else {
answer = "No";
}
}
return answer;
}
}
๋ ์นด๋ ๋ญ์น๋ฅผ ๊ฐ๊ฐ์ ArrayList์ ๋ด์ ๋ค์, get()
ํจ์๋ก ๋งจ ์ ์นด๋๋ฅผ ํ์ธํด, goal
์ ๋ฌธ์์ด๊ณผ ๊ฐ๋ค๋ฉด, ํด๋น ์นด๋๋ฅผ ArrayList์์ ์ ๊ฑฐํด ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฌผ๋ก , ์ด ๋ฐฉ๋ฒ์ ์๋ก์ด ArrayList๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํด์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ ๋ง๊ณ , remove()
๋ฉ์๋๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์๊ฐ ๋ณต์ก๋๋ ์ผ๋ก ๋ฐฐ์ด์ ๊ทธ๋๋ก ์ฌ์ฉํ์ ๋๋ณด๋ค ํจ์จ์ฑ์ด ์กฐ๊ธ ๋จ์ด์ง๋ค.
Awesome ๐