ghxmpphwcehxepqiphxgw
위 문자에서 'hx'가 몇 번 반복되는지 출력하는 프로그램을 작성하시오.
ex) abcdabcd 중에서 'ab'가 기준이라면
출력값) 2
위에 보이는 건 지난 기술면접에서 접한 문제이다. 'KMP 알고리즘'을 사용하여 풀었더라면 출근을 했을 수도 있겠지만(?) 안타깝게도, 나는 해당 알고리즘의 존재를 방금 알게 되었다. 알았더라도... 못 풀었을 거다.
https://bowbowbow.tistory.com/6
https://ict-nroo.tistory.com/16
위에 보이는 링크들을 들어가면 두 곳 모두 아주 자세하고 친절하게 설명이 되어있다. (자바 기준 코드를 보고 싶다면 아래 링크로)
알고리즘을 몰랐던 것은 둘 째 치고 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);
}
이렇게 코드를 작성하면 원하는 답을 얻을 수 없다ㅋ
무슨 생각으로 저렇게 코드를 적었는지 모르겠다...
주석이라고 적은것 조차 틀렸다 ...