โค๏ธ Problem
- ๋ฌธ์
๋ฌธ์์ด my_string์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. my_string์์ ์ค๋ณต๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ํ๋์ ๋ฌธ์๋ง ๋จ๊ธด ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. - ์ ํ ์ฌํญ
- 1 ≤ my_string ≤ 110
- my_string์ ๋๋ฌธ์, ์๋ฌธ์, ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
- ๊ณต๋ฐฑ(" ")๋ ํ๋์ ๋ฌธ์๋ก ๊ตฌ๋ถํฉ๋๋ค.
- ์ค๋ณต๋ ๋ฌธ์ ์ค ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์๋ฅผ ๋จ๊น๋๋ค.
- ์ ์ถ๋ ฅ ์ & ์ค๋ช
no | my_string | result |
1 | "people" | "peol" |
2 | "We are the world" | "We arthwold" |
- "people"์์ ์ค๋ณต๋ ๋ฌธ์ "p"์ "e"์ ์ ๊ฑฐํ "peol"์ returnํฉ๋๋ค.
- "We are the world"์์ ์ค๋ณต๋ ๋ฌธ์ "e", " ", "r" ๋ค์ ์ ๊ฑฐํ "We arthwold"์ returnํฉ๋๋ค
๐ Solution
ํ์ด 1
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public String solution(String my_string) {
String[] trans = my_string.split("");
Queue<String> qu = new LinkedList<>();
for(int i=0; i<trans.length; i++) {
if(qu.contains(trans[i])) {
continue;
} else {
qu.add(trans[i]);
}
}
System.out.println(qu);
StringBuffer sb = new StringBuffer();
while(!qu.isEmpty()) {
sb.append(qu.poll());
}
return sb.toString();
}
}
์ฒ๋ฆฌ์๋์ ๋ํ ๋ณด์์ด ํ์ํด ๋ณด์ธ๋ค
ํ์ด 2
class Solution {
public String solution(String my_string) {
StringBuffer answer = new StringBuffer();
for(int i=0; i<my_string.length(); i++){
if(i==my_string.indexOf(my_string.charAt(i)))
answer.append(my_string.charAt(i));
}
return answer.toString();
}
}
์ฒ๋ฆฌ์๋ ๋ณด์ ์๋ฃ
๐ Comment
์ฒ์์๋ Queue๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
Queue์์ trans[i]๊ฐ ์๋์ง ๊ฒ์ฌํ๊ณ ์๋ ๊ฒฝ์ฐ์๋ง Queue์ ํด๋น ๊ฐ์ ์ฝ์ ํ๋๋ก ํ์๋ค. ๊ทธ ํ Queue์์ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๊บผ๋ด StringBuffer์ ๋ฃ๋๋ก ๊ตฌํํ์๋ค.
์ฌ๊ธฐ๊น์ง ๊ตฌํ ์์ฒด๋ ์ด๋ ต์ง ์์๋๋ฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. String ๋ฐฐ์ด, Queue, StringBuffer๋ฅผ ์ฌ์ฉํ ๊ฒ์ด ์ฑ๋ฅ์ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผฐ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ๋๋ฒ์งธ๋ก ๊ตฌ์ฑํ ์ฝ๋๋ String ๋ฐฐ์ด์ ์ฌ์ฉํ์ง ์๊ณ String์ indexOf๋ฅผ ์ฌ์ฉํ์๋ค. my_string.charAt(i)์ด ์ฒ์ ๋ฑ์ฅํ ๋๋ง StringBuffer์ ๋ฃ์ผ๋ฉด ๋๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋คํํ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ณ ์ฑ๋ฅ๋ ํฅ์์ํฌ ์ ์์๋ค.
๋ฌธ์์ด์ ์ถ๊ฐํด์ผํ๋ ์ํฉ์์ ๋๋ ์ต๊ด์ฒ๋ผ StringBuffer๋ฅผ ์ฌ์ฉํ๊ณค ํ๋ค. ๋ง์นจ ์ค๋ ํ์ฉ์ ํ์์ผ๋ ์ค๋ StringBuffer์ ๋ํด ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
๐ค Concept
1. StringBuffer
- java.lang.StringBuffer Class
- ๊ฐ๋ณ ํด๋์ค(mutable class) ↔ ๋ถ๋ณ ํด๋์ค(immutable class): String
String ํด๋์ค์ ์ธ์คํด์ค๋ ํ ๋ฒ ์์ฑ๋๋ฉด ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๊ณ , ๋ณ๊ฒฝ ๋ถ๊ฐ
StringBuffer ํด๋์ค์ ์ธ์คํด์ค๋ ๊ฐ ๋ณ๊ฒฝ ๋ฐ ์ถ๊ฐ ๊ฐ๋ฅ - ๋ด๋ถ์ ์ผ๋ก buffer ๊ณต๊ฐ์ ๊ฐ์ง
โป buffer: ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ - ๊ธฐ๋ณธ๊ฐ: 16๊ฐ ๋ฌธ์ (ํฌ๊ธฐ ๋ณ๋ ์ง์ ๊ฐ๋ฅ)
- StringBuffer ๋ฉ์๋
- StringBuffer append(VALUE)
- int capacity()
- StringBuffer delete(int start, int end)
- StringBuffer deleteCharAt(int index)
- StringBuffer insert(int offset, VALUE)
- StringBuffer reverse()
- StringBuffer substring(int start, int end)
2. String๊ณผ์ ๋น๊ต
- ๋ฌธ์์ด์ ์์ ๋๋ ์ถ๊ฐํ๋ค๊ณ ํ์ ๋ ๊ฒฐ๊ณผ๋ ๋์ผํ๋๋ผ๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋๋ ๊ณผ์ ์ด ๋ค๋ฅด๋ค
String str = "hello";
str += " world";
//์ถ๋ ฅ ์ "hello world"
- String์ ๊ฒฝ์ฐ, "hello"์ ๊ฐ์ ์ง๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํฌ์ธํ ํ๊ณ ์๋ ์ฐธ์กฐ๋ณ์ str์ด "hello world"์ ๊ฐ์ ๊ฐ์ง๋ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํฌ์ธํ ํ๋๋ก ๋ณ๊ฒฝ๋จ
- ์ฆ, String์ ๋ถ๋ณํ๊ธฐ ๋๋ฌธ์ ์์ ๋๋ ์ถ๊ฐํ๋ ์์ ์์ ์๋ก์ด String ์ธ์คํด์ค๊ฐ ์์ฑ
- String์์ concat ๋๋ "+"๋ฅผ ์ผ์ ํ์ ์ด์ ์ฌ์ฉํ๊ฒ๋๋ฉด ์๋๊ฐ ๊ธ๊ฒฉํ๊ฒ ๋๋ ค์ง
- ๊ธฐ์กด์ "hello" ๊ฐ์ ์ง๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋ฉ๋ชจ๋ฆฌ(Heap memory)์์ Garbage๋ก ์ฒ๋ฆฌ๋จ (์ดํ Garbage Collector์ ์ํด ์ฌ๋ผ์ง)
- String์ ๋ฌธ์์ด ์์ , ์ถ๊ฐ, ์ญ์ ํ๋ ์ฐ์ฐ์ ํ์ฉํ๋ ๊ฒฝ์ฐ์๋ ํ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์
StringBuffer sb= new StringBuffer("hello");
sb.append(" world");
//์ถ๋ ฅ ์ "hello world"
- StringBuffer(๋๋ StringBuilder)๋ ๊ฐ๋ณ์ฑ์ ๊ฐ์ง๋ ํด๋์ค
- append API๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผ ๊ฐ์ฒด์์ ๋ฌธ์์ด์ ๋ณ๊ฒฝ, ์์ , ์ญ์ ํ ์ ์์
โป API: ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๊ฒ์ ๋์์ฃผ๋ ๋งค๊ฐ์ฒด
2. StringBuilder์์ ๋น๊ต
- StringBuffer๋ StringBuilder๋ณด๋ค ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์
- StringBuilder๋ StringBuffer๋ณด๋ค ์๋๊ฐ ์ฐ์ํ๋ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ์ง ์์ (๋๊ธฐํ ๋ฏธ์ง์)
- ๋๊ธฐํ๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์๋ ์ํฉ์์๋ StringBuffer ๋ณด๋ค๋ StringBuilder๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌ
๊ฐ๋จ ์ ๋ฆฌ
- String์ ๋ถ๋ณํ๋ฏ๋ก ๋ฌธ์์ด์ ์ฝ๋๋ฐ ์ต์ ํ
- StringBuffer๋ ๊ฐ๋ณํ๋ฉฐ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์ ์ ํฉ
- StringBuilder๋ ๊ฐ๋ณํ๋ฉฐ ์ฑ๊ธ ์ค๋ ๋ ํ๊ฒฝ์ ์ ํฉ
'Programmers lv-0' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์์ด ๊ณ์ฐํ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
---|---|
ํ ๋ฒ๋ง ๋ฑ์ฅํ ๋ฌธ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๊ฐ๊น์ด ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
์ปจํธ๋กค ์ ํธ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
์์ธ์๋ถํด - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
์จ์ด์๋ ์ซ์์ ๋ง์ (1) - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
๋๊ธ