[프로그래머스] 접미사인지 확인하기

이준영·2025년 12월 14일
9일차
  • 오늘은 문자열로 장난치는 문제를 재미있게 풀었다.
  • 새로 배운 메서드로는 string.Substring(int start, int length)와 string.EndsWith(string end)이 있었다.

Substring() : 특정 인덱스를 시작점으로 지정하면, 그 위치부터 문자열의 끝까지 모든 문자를 추출하여 반환하는 메서드

EndsWith() : 메서드는 문자열이 특정 문자열로 끝나는지 여부를 확인하여 bool (참/거짓) 값을 반환하는 메서드

접미사인지 확인하기

문제 소개

문제 소개
  • 사실 오늘 문제에서 제일 힘들었던 점은 접미사가 무엇인지 몰라서 문제를 이해하는데 제일 힘들었다.
  • 접미사 : 어떤 단어나 문자열의 끝에 붙는 부분
  • 즉 이 문제는 my_string에 끝에 is_suffix가 있는지 확인하면 되는 문제다.

나의 문제 풀이

  1. 가장 먼저 생각난건 Substring으로 문자열을 잘라서 비교하는 방법이었다.
  2. Substring에서 필요한건 시작 지점과 접미사의 길이.
  3. is_suffix의 길이가 접미사의 길이가 되고
  4. my_string의 길이에서 접미사의 길이를 빼면 시작 지점이 나온다.
코드
  • 여기서 if(start<0) return 0; 시작 지점이 음수가 되었을 경우의 예외처리를 해줬다.
  • 처음에는 그냥 실행시켯다가 오류가 뜨는 것을 보고 반례를 찾으려고 보니, 문제에 바로 있었다.
my_stringis_suffixresult
"banana""abanana"0
  • 이런 경우는 제시된 접미사가 더 길기 때문에 start지점이 음수가 되면서 오류가 발생했다.

다른 사람의 풀이

다른 사람의 풀이
  • 이분의 풀이 덕에 EndsWith라는 메서드를 알게 되었다.

성능 최적화

  • 다른 사람의 풀이도 한번 외워서 풀어보는 편인데, 이상한 점이 발견되었다.
나의 풀이다른 사람의 풀이
  • 이상할 정도로 나의 풀이가 더 빨랐다.
  • 이점이 이상하다고 생각해서 Gemini에게 물어봤다.
Gemini의 결론
  • 그래서 저 코드를 이용해 보았다.
Test
  • 성능이 압도적으로 좋아졌다.
  • 원인을 분석하자면 한국어 문화권이라서 속도라 느린걸로 판별되었다.

소감

한국이라서 속도가 느리다니 이게 무슨 소리요

profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글