2023. 11. 1. 16:16ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1237
-> ์ด์ ๋ฌธ์ ํ์ด
7. ๊ต์ก ๊ณผ์ ์ค๊ณ
์ค๋ช
ํ์๋ 1๋ ๊ณผ์ ์ ์์ ๊ณํ์ ์ง์ผ ํฉ๋๋ค.
์์ ์ค์๋ ํ์๊ณผ๋ชฉ์ด ์์ต๋๋ค. ์ด ํ์๊ณผ๋ชฉ์ ๋ฐ๋์ ์ด์ํด์ผ ํ๋ฉฐ, ๊ทธ ์์๋ ์ ํด์ ธ ์์ต๋๋ค.
๋ง์ฝ ์ด ๊ณผ๋ชฉ์ด A, B, C, D, E, F, G๊ฐ ์๊ณ , ์ฌ๊ธฐ์ ํ์๊ณผ๋ชฉ์ด CBA๋ก ์ฃผ์ด์ง๋ฉด ํ์๊ณผ๋ชฉ์ C, B, A๊ณผ๋ชฉ์ด๋ฉฐ ์ด ์์๋๋ก ๊ผญ ์์ ๊ณํ์ ์ง์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์์๋ B๊ณผ๋ชฉ์ C๊ณผ๋ชฉ์ ์ด์ํ ํ์ ๋ค์ด์ผ ํ๊ณ , A๊ณผ๋ชฉ์ C์ B๋ฅผ ์ด์ํ ํ์ ๋ค์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
ํ์๊ฐ C, B, D, A, G, E๋ก ์์ ๊ณํ์ ์ง๋ฉด ์ ๋๋ก ๋ ์ค๊ณ์ด์ง๋ง
C, G, E, A, D, B ์์๋ก ์งฐ๋ค๋ฉด ์ ๋ชป ์ค๊ณ๋ ์์ ๊ณํ์ด ๋ฉ๋๋ค.
์์ ๊ณํ์ ๊ทธ ์์๋๋ก ์์ ์์ ์ด ์ด์๋๋ฉด ๋ค์ ์์ ์ ์์ํ๋ค๋ ๊ฒ์ผ๋ก ํด์ํฉ๋๋ค.
์์ ๊ณํ์์์ ๊ฐ ๊ณผ๋ชฉ์ ๋ฌด์กฐ๊ฑด ์ด์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํ์๊ณผ๋ชฉ์์๊ฐ ์ฃผ์ด์ง๋ฉด ํ์๊ฐ ์ง N๊ฐ์ ์์ ์ค๊ณ๊ฐ ์๋ ๊ฒ์ด๋ฉด “YES", ์๋ชป๋ ๊ฒ์ด๋ฉด ”NO“๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ ํ ์ค์ ํ์๊ณผ๋ชฉ์ ์์๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ชจ๋ ๊ณผ๋ชฉ์ ์๋ฌธ ๋๋ฌธ์์ ๋๋ค.
๋ ๋ฒ ์งธ ์ค๋ถํฐ ํ์๊ฐ ์ง ์์ ์ค๊ณ๊ฐ ์ฃผ์ด์ง๋๋ค.(์์ ์ค๊ณ์ ๊ธธ์ด๋ 30์ดํ์ด๋ค)
์ถ๋ ฅ
์ฒซ ์ค์ ์์ ์ค๊ณ๊ฐ ์๋ ๊ฒ์ด๋ฉด “YES", ์๋ชป๋ ๊ฒ์ด๋ฉด ”NO“๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
CBA
CBDAGE
์์ ์ถ๋ ฅ 1
YES
๋ฌธ์ ํ์ด 1
public String solution(String sub, String design)
{
Queue<Character> queue = new LinkedList<>();
for (char c : design.toCharArray())
{
queue.add(c);
}
String tmp = "";
for (Character character : queue)
{
for (char c : sub.toCharArray())
{
if (character == c) {
tmp += character;
}
}
}
return tmp.equals(sub) ? "YES" : "NO";
}
๐ฉ๐ป๐ป : ์ฐ์ ๋๋ ์์ ์ค๊ณ ๋ฌธ์์ด design์ด ์ฃผ์ด์ง๋ฉด ์ด๋ฅผ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ queue์ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ ๋ค์ tmp ๋ฌธ์์ด ํ๋๋ฅผ ์ด๊ธฐํํด์ฃผ๊ณ , ๊ทธ ๋ค์ queue๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋๋ฉด์ ํ์ ๊ณผ๋ชฉ sub์ ๋ฌธ์ ๋ฐฐ์ด๊ณผ queue์ ๋ค์ด๊ฐ ๋ฌธ์๋ฅผ ๋น๊ตํ๋ฉด์ ๋์ด ๊ฐ์ผ๋ฉด tmp ๋ฌธ์์ด์ ์ถ๊ฐ๋ฅผ ํด์ฃผ๊ณ , ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค. ๊ทธ ๋ค์ tmp ๋ฌธ์์ด์ด sub์ด๋ ๊ฐ์ผ๋ฉด ํ์ ๊ณผ๋ชฉ์ ์์๋๋ก ๋ค์ด์ ๊ฐ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก YES๋ฅผ ๋ฆฌํดํ๊ณ ์๋๋ฉด NO๋ฅผ ๋ฆฌํดํ๋๋ก ํ๋ค.
C, B, D, A, G, E ์ด ์์ ์ค๊ณ์ tmp๋ CBA์ด๋ฏ๋ก sub๋ ๊ฐ์์ YES๋ฅผ ๋ฆฌํดํ์ง๋ง,
C, G, E, A, D, B ์ด ์์ ์ค๊ณ์ tmp๋ CAB์ด๋ฏ๋ก sub์ด๋ ๋ฌ๋ผ์ NO๋ฅผ ๋ฆฌํดํ๋ค.
๋ฌธ์ ํ์ด 2
public String solution2(String need,String plan) {
String answer = "YES";
Queue<Character> queue = new LinkedList<>();
for (char c : need.toCharArray()) {
queue.offer(c); // ํ์ ๊ณผ๋ชฉ ์ธํ
}
for (char c : plan.toCharArray()) {
if (queue.contains(c)) {
if (c != queue.poll()) {
return "NO";
}
}
}
if (!queue.isEmpty()) {
return "NO";
}
return answer;
}
๐พ : ๊ฐ์ฌ๋์ ์ฐ์ answer๋ฅผ YES๋ก ์ด๊ธฐํํ๊ณ , ์ฃผ์ด์ง ํ์ ๊ณผ๋ชฉ need๋ฅผ Queue์ ๋ฃ์ด์คฌ๋ค.
๊ทธ ๋ค์, ์ง ์์ ์ค๊ณ ๋ฌธ์์ด plan์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ๋ฌธ์ c ๊ฐ queue์ ๋ค์ด์๋์ง contains ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ queue์ ํฌํจ๋์ด ์๋ค๋ ๊ฑด ํ์ ๊ณผ๋ชฉ์ด๋ผ๋ ๊ฒ์ด๊ณ , ๊ทธ ๋ฌธ์ c๊ฐ queue์์ poll ํด์ ๊บผ๋ธ ๊ฐ๊ณผ ๊ฐ์ผ๋ฉด ๊ณ์ ๋ฐ๋ณต๋ฌธ์ ์งํํ๋ฉด ๋์ง๋ง, ๋ง์ฝ ๋ค๋ฅด๋ฉด ํ์ ๊ณผ๋ชฉ ์์๋๋ก ์์ ์ ์ค๊ณํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ ๋ฐ๋ณต๋ฌธ์ ๋์ง ์๊ณ ๋ฐ๋ก NO๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ ๋ค ๋๊ณ ๋์ ๋ง์ฝ queue๊ฐ ๋น์ด์์ง ์๋ค๋ ๊ฒ์ ํ์ ๊ณผ๋ชฉ์ ๋ชจ๋ ํฌํจํด์ ์์ ์ ์ค๊ณํ์ง ์์๋ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ return "NO"๋ฅผ ํด์ฃผ๊ณ , queue๊ฐ ๋น์ด์๋ค๋ฉด YES ๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.