Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

UpDown Dev Story

알고리즘 연습 - 중복문자제거 본문

Algorithm

알고리즘 연습 - 중복문자제거

updown 2021. 5. 21. 15:31

아래 강의를 보면서 연습하고 기록하고 있습니다

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

문제

소스코드 (내가 짠 것)

import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Algorithm {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String inputString = sc.next();

		Set<Character> characters = new LinkedHashSet<>();
		char[] chars = inputString.toCharArray();
		for (char aChar : chars) {
			characters.add(aChar);
		}

		StringBuilder sb = new StringBuilder("");
		for (Character character : characters) {
			sb.append(character);
		}
		System.out.println(sb);
	}
}

 

강사님이 짠 소스코드

import java.util.*;
class Main {	
	public String solution(String str){
		String answer="";
		for(int i=0; i<str.length(); i++){
			//System.out.println(str.charAt(i)+" "+i+" "+str.indexOf(str.charAt(i)));
			if(str.indexOf(str.charAt(i))==i) answer+=str.charAt(i);
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.print(T.solution(str));
	}
}

내가 짠 것 정답해설

  1. 사용자에게 문자를 입력받고
  2. add한 순서를 살리면서 중복을 제거하기위해 LinkedHashSet을 사용
  3. 사용자가 입력한 문자를 char[] 로 변환
  4. char[]를 loop 돌리면서 LinkedHashSet 에 add
  5. LinkedHashSet에 들어있는 값을 loop 돌리면서 StringBuilder에 append하여 출력

강사님이 짠 것 정답해설

  1. 사용자에게 문자를 입력받고
  2. loof 돌면서 indexof를 사용해 처음으로 그 문자의 위치를 찾아 틀린 것은 넘기고
  3. 정답을 만들어 출력한다

참고

indexOf()  특정 문자 문자열 앞에서부터 처음 발견되는 인덱스를 반환하며

만약 찾지 못했을 경우 "-1"을 반환합니다.

Comments