ghxmpphwcehxepqiphxgw

위 문자에서  'hx'가 몇 번 반복되는지 출력하는 프로그램을 작성하시오. 
ex) abcdabcd 중에서 'ab'가 기준이라면 
출력값) 2

위에 보이는 건 지난 기술면접에서 접한 문제이다. 'KMP 알고리즘'을 사용하여 풀었더라면 출근을 했을 수도 있겠지만(?) 안타깝게도, 나는 해당 알고리즘의 존재를 방금 알게 되었다. 알았더라도... 못 풀었을 거다.

 

https://bowbowbow.tistory.com/6 

 

KMP : 문자열 검색 알고리즘

문자열 검색이 뭐지? 워드프로세서를 사용할 때 찾기 기능을 사용한적 있을 겁니다. 브라우저에서도 Ctrl+F 단축키를 눌러 검색할 수 있습니다. 아래 이미지는 브라우저에서 "테이프"를 검색했을 때 결과를 캡쳐한..

bowbowbow.tistory.com

https://ict-nroo.tistory.com/16

 

[알고리즘] Knuth-Morris-pratt Algorithm, KMP 알고리즘

■KMP 알고리즘 KMP알고리즘에 대해 간략히 설명 하자면, 지금까지 알려진 문자열 알고리즘 가운데 가장 최저의 시간복잡도를 가진 알고리즘이다. 일단, KMP알고리즘의 시간복잡도는 O(N+K) 여기서 N과 K는 비교할..

ict-nroo.tistory.com

위에 보이는 링크들을 들어가면 두 곳 모두 아주 자세하고 친절하게 설명이 되어있다. (자바 기준 코드를 보고 싶다면 아래 링크로)


알고리즘을 몰랐던 것은 둘 째 치고 index를 통해 접근해야 하겠다고 맨 처음 생각하고 몇 분 지나지 않아, 아래의 괴상한 코드를 작성했다.

String str = "ghxmpphwcehxepqiphxgw";
		
//split(); 함수를 이용해서 문자열을 특정 문자("hx")를 기준으로 자르고,
//잘라진 문자를 String[] tagetStr에 담아준다.
String[] tagetStr = str.split("hx");
		
//단순하게 특정 문자를 기준으로 자른 나머지 문자들을 담은 것이기 때문에
//tagetStr의 length를 바로 출력하는 것이 아닌 조건문을 통해 검사 후 출력한다.
if(str.lastIndexOf("hx") == str.length()) {
	//특정 문자열이 문자의 마지막 문자라면 tagetStr[]의 길이를 바로 출력
	System.out.println(tagetStr.length);
}else {
	//특정 문자열이 문자의 마지막 문자가 아니라면
	System.out.println(tagetStr.length-1);
}

이렇게 코드를 작성하면 원하는 답을 얻을 수 없다ㅋ

무슨 생각으로 저렇게 코드를 적었는지 모르겠다... 

주석이라고 적은것 조차 틀렸다 ...

+ Recent posts