Coding Planet
6. ์ค๋ณต๋ฌธ์์ ๊ฑฐ - indexOf(), charAt() / HashSet ์ผ๋ก ์ค๋ณต์ ๊ฑฐํ๊ธฐ ๋ณธ๋ฌธ
๐ ์ฝ๋ฉํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
6. ์ค๋ณต๋ฌธ์์ ๊ฑฐ - indexOf(), charAt() / HashSet ์ผ๋ก ์ค๋ณต์ ๊ฑฐํ๊ธฐ
jhj.sharon 2023. 5. 4. 20:58๋ฐ์ํ
1. ๋ฌธ์ ์๊ตฌ์ฌํญ
- ์๋ฌธ์๋ก ๋ ํ๊ฐ์ ๋ฌธ์์ด์ด ์ ๋ ฅ๋๋ฉด ์ค๋ณต๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
- ์ค๋ณต์ด ์ ๊ฑฐ๋ ๋ฌธ์์ด์ ๊ฐ ๋ฌธ์๋ ์๋ ๋ฌธ์์ด์ ์์๋ฅผ ์ ์งํฉ๋๋ค.
2. ๋ฌธ์ ํ์ด
- indexOf()๋ ํด๋น ๋ฌธ์๊ฐ ๊ฐ์ฅ ์ฒ์ ๋ฐ๊ฒฌ๋๋ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ด๋ค.
- str.CharAt()์ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด๊ฐ ์ซ์์ ์ธ๋ฑ์ค์ ํ์ฌ ๋ฌด์จ ๋ฌธ์๊ฐ ์๋์ง ๋ฐํํ๋ ๋ฉ์๋์ด๋ค.
- ์ค๋ณต๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ ๊ฐ์ฅ ์ค์ํ ๋ ผ๋ฆฌ๋ ํด๋น ๋ฌธ์๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์ธ๋ฑ์ค ๋ฒํธ์ ํ์ฌ ํด๋น ๋ฌธ์๊ฐ ์กด์ฌํ๋ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ผ๋ฉด ๊ทธ ๋ฌธ์๋ ์ค๋ณต๋์ง ์๋ ๋ฌธ์์ธ ๊ฒ์ด๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฐ๋ณต๋ฌธ์์ good์ด๋ผ๋ ๋ฌธ์๋ฅผ ์ํํ๋ค๋ฉด index[0]์ ๋ฌธ์(str.charAt(i))๋ 'g'์ด๋ค. ๋ํ g์ ๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์ธ๋ฑ์ค(str.indexOf('g'))๋ 0๋ฒ์ด๋ฏ๋ก ์ค๋ณต๋์ง ์์ ๋ฌธ์์ด๋ค.
- int =1์ผ ๋, ์์ ๋์ผํ ๋ ผ๋ฆฌ๋ก o์ ์ค๋ณต๋์ง ์๋๋ค.
- ํํธ int=2์ผ ๋๋, index[0]์ ๋ฌธ์(str.charAt(i))๋ 'o'์ด๋ค. ํ์ง๋ง o๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์ธ๋ฑ์ค(str.indexOf('0'))๋ 1์ด๋ฏ๋ก ์ผ์นํ์ง ์์ ์ค๋ณต๋ ๋ฌธ์์ด๋ค.
for(int i =0; i<str.length(); i++) {
if(str.indexOf(str.charAt(i))==i) answer +=str.charAt(i);
}
2. ๋ ๋์๊ฐ๊ธฐ - HashSet ์ฌ์ฉํด๋ณด๊ธฐ
- ์ ์ฝ๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก ์๊ฐ ๋ณต์ก๋๊ฐ ํฌ๊ฒ ์ฆ๊ฐํ๋ฉฐ, ์ค๋ณต๋ ๋ฌธ์๊ฐ ๋ง์ ๊ฒฝ์ฐ์๋ ์ค๋ณต ์ฒดํฌ๋ก ์ธํด ๋ถํ์ํ ๋ฐ๋ณต์ด ๋ฐ์ํ๊ฒ ๋๋ค.
- ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์๋ ์ค๋ณต์ ํ์ฉํ์ง ์๋ HashSet์ ์ฌ์ฉํ์ฌ ์ค๋ณต์ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์ ๊ฑฐํ ์ ์๋ค.
- HashSet์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฏ๋ก ๋ฌธ์์ด์ ๊ฐ ๋ฌธ์๋ฅผ HashSet์ ์ถ๊ฐํ๋ฉด ์ค๋ณต๋ ๋ฌธ์๋ ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค.
- ์๋ ์ฝ๋์์๋ HashSet์ ์ฌ์ฉํ์ฌ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ StringBuilder๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๋ค.
- HashSet์ ํฌํจ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ StringBuilder์ ์ถ๊ฐํ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๋ค.
- ๋ค๋ง, Set ์์ฒด๋ ๋ฌธ์์ด์ ์์๋ฅผ ์ ์งํ์ง ์๋๋ค. ๋จ์ ์ค๋ณต์ ๊ฑฐ์ฉ!
- ๋ฐ๋ผ์, ๋ฐฐ์ด์ ๋๋ฉด์ ์์๋๋ก sb์ c๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ ํด๋น ๊ฐ์ toString์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํํ๋ค.
package algorithm01;
import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
public class RemoveChar {
public String solution(String str) {
StringBuilder sb = new StringBuilder();
Set<Character> set = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!set.contains(c)) {
sb.append(c);
set.add(c);
}
}
return sb.toString();
}
public static void main(String[] args) {
RemoveChar T = new RemoveChar();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
๋ฐ์ํ
'๐ ์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments