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