99클럽 코테 스터디 19일차 TIL

2024. 8. 10. 01:41·알고리즘 공부

오늘의 학습 키워드

  • 그리디 알고리즘 (Greedy Algorithm)
  • 문자열 조작 (String Manipulation)

문제 이해

이 문제는 주어진 이름을 만들기 위해 조이스틱을 이용해 각 알파벳을 변경하고, 최소한의 조이스틱 이동으로 목표 이름을 완성하는 문제입니다. 이름의 각 알파벳을 'A'에서 목표 알파벳으로 바꾸고, 좌우로 이동하면서 최소한의 조작으로 목표 이름을 만드는 것이 목표입니다.

실패한 풀이

int answer = 0;
int length = name.length();
int minMove = length - 1;

for (int i = 0; i < length; i++) {
    answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);

    int next = i + 1;
    while (next < length && name.charAt(next) == 'A') {
        next++;
    }

    minMove = Math.min(minMove, i + length - next + i);
}

answer += minMove;
return answer;

풀이 설명

  1. 초기 설정

    • answer는 최종적으로 필요한 최소 조작 수를 저장하는 변수입니다.
    • length는 주어진 이름의 길이입니다.
    • minMove는 이름을 만들기 위해 필요한 최소한의 좌우 이동 횟수를 저장합니다. 초기 값은 이름의 길이보다 하나 적게 설정했습니다.
  2. 알파벳 변경 횟수 계산

    • 각 알파벳을 'A'에서 목표 알파벳으로 바꾸는 데 필요한 최소 조작 횟수를 계산합니다.
    • Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1)은 알파벳을 'A'에서 해당 알파벳으로 바꾸는 데 필요한 최소 조작 횟수를 의미합니다.
  3. 최소 이동 횟수 계산

    • next는 현재 위치에서 연속된 'A'의 다음 위치를 찾습니다.
    • 만약 연속된 'A'가 있다면, 이 부분을 건너뛰기 위해 현재 위치에서 'A'가 끝나는 지점까지 돌아가고 다시 앞쪽으로 이동하는 방법을 고려합니다.
    • minMove는 이 방법과 현재 계산된 이동 횟수 중 최소값을 유지합니다.
  4. 최종 계산

    • 알파벳 변경에 필요한 조작 수와 최소 이동 횟수를 더해 answer에 저장하고 반환합니다.

오늘 회고

  • 최적화에 실패한 것 같다. 예제 케이스는 통과했으나 실제 제출했을 때 일부 실패하였다. 주말에 이어서 개선해보아야할듯하다.

'알고리즘 공부' 카테고리의 다른 글

99클럽 코테 스터디 21일차 TIL  (0) 2024.08.11
99클럽 코테 스터디 20일차 TIL  (0) 2024.08.11
99클럽 코테 스터디 18일차 TIL  (0) 2024.08.08
99클럽 코테 스터디 17일차 TIL  (0) 2024.08.08
99클럽 코테 스터디 16일차 TIL  (0) 2024.08.06
'알고리즘 공부' 카테고리의 다른 글
  • 99클럽 코테 스터디 21일차 TIL
  • 99클럽 코테 스터디 20일차 TIL
  • 99클럽 코테 스터디 18일차 TIL
  • 99클럽 코테 스터디 17일차 TIL
HD9504
HD9504
  • HD9504
    습관
    HD9504
  • 전체
    오늘
    어제
    • 분류 전체보기
      • python
        • 트러블슈팅
        • Numpy
        • pandas
        • Wordbook in python
      • Listen to a lecture
        • school for ai in edwith
      • 용어정리
      • 전공 복습
        • 실험계획법
        • 회귀분석
        • 베이지안
        • 일반화 선형모형
      • 자연어처리
      • 글쓰기 공부
      • 밑바닥부터 시작
      • Java
      • Spring
        • JPA
        • Version
      • Web
        • HTML, CSS
        • Javascript
        • 개념, 이론
      • 하루일과
      • 알고리즘 공부
      • 사색
      • 문제해결
      • Database
        • Redis
      • Computer Science
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Decorator
    spring
    Java
    til
    항해99
    코딩테스트준비
    REDIS
    spring boot
    99클럽
    디자인패턴
    개발자취업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
HD9504
99클럽 코테 스터디 19일차 TIL
상단으로

티스토리툴바