saurus2
Saurus2
saurus2
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발
      • AJAX
    • ML Ops
    • Profile
    • 음식점
    • 배낭여행
    • 컴퓨터공학
      • 알고리즘 공부
      • C++
      • Sever 스터디
      • Java spring
      • 알고리즘 _ 문제해결
      • 딥러닝
      • Java 정리
      • Python
      • LeetCode 1000
      • Machine Learning Study
      • Sign language Detection Pro..
      • LeetCode Solutions
    • 비콘
    • 데일리 리포트
    • 유학일기
      • 영어 공부
      • Daily
    • AI Master Degree
      • Data Mining
      • AI and Data engineering
      • Math Foundations for Decisi..
      • Natural Language Processing

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 취업준비
  • 문제해결능력
  • c++
  • two pointer
  • DFS
  • 리트코드
  • 개발자
  • LeetCode
  • 백준
  • 취준
  • 릿코드
  • 파이썬
  • 개발자 취업준비
  • BFS
  • 딥러닝
  • 알고리즘
  • Python
  • 알고리즘문제해결
  • 온라인저지
  • 딕셔너리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

[LeetCode - Online Assessment 기출] Circular Printer
컴퓨터공학/LeetCode 1000

[LeetCode - Online Assessment 기출] Circular Printer

2022. 10. 21. 02:37

 

  • 단어가 주어졌을때, 처음 알파벳 부터 각 알파벳에 맞게 포인터를 움직여야한다.
  • 포인터의 첫번째 위치는 'A'이며, 포인터가 왼쪽, 오른쪽으로 움직일 때마다 1초씩 증가한다. 

입력 & 출력 예제

  • case1
    • 입력: "BZA"
    • 출력: 4
  • case2
    • 입력: "AZGB"
    • 출력: 13
  • case3
    • 입력: "ZNMD"
    • 출력: 23

제한사항

  • 1 <= s 문장의 길이 <= 10^5

문제 풀이

  • 제한사항을 보면 문장의 최대길이는 10^5이기 때문에, 백트레킹을 사용하기 힘들어보인다. 
  • 수학식을 사용하여 O(N) 시간이 걸리도록 구현하자.
  • 이전 알파벳과 현재위치 알파벳의 아스키코드 값 차이를 구할 건데, 시작점이 A이기 때문에 문장 앞에 A를 붙인다.
  • A ~ Z까지 알파벳의 총 갯수는 26개이다. 
  • 즉 이전 알파벳과 현재 알파벳의 차이를 절대값으로 구하고, 포인터가 시계방향으로 갈때와 반시계방향으로 갈때의 최소 값을 구해야한다.
  • 시계방향은 알파벳들의 차이 값을 사용하고, 반시계방향은 알파벳의 총 크기 26에서 차이 값을 빼주면 된다. 

소스 코드

inp = 'BZA'
ans = 0
inp = 'A' + inp
for i in range(1, len(inp)):
    pre, curr = inp[i - 1], inp[i]
    d = abs(ord(pre) - ord(curr))
    ans += min(d, 26 - d)
print(ans)
저작자표시 (새창열림)

'컴퓨터공학 > LeetCode 1000' 카테고리의 다른 글

[LeetCode] 1662. Check If Two String Arrays are Equivalent  (0) 2022.10.26
[LeetCode - Online Assessment 기출] Stars and Bars* / 2055. Plates Between Candles  (0) 2022.10.21
[LeetCode - Didi labs 기출문제] 265. Paint House II  (0) 2022.10.20
[LeetCode - Didi Labs 기출문제] 40. Combination Sum II  (0) 2022.10.17
[LeetCode - DiDi Labs 기출 문제] 17. Letter Combinations of a Phone Number  (0) 2022.10.17
    '컴퓨터공학/LeetCode 1000' 카테고리의 다른 글
    • [LeetCode] 1662. Check If Two String Arrays are Equivalent
    • [LeetCode - Online Assessment 기출] Stars and Bars* / 2055. Plates Between Candles
    • [LeetCode - Didi labs 기출문제] 265. Paint House II
    • [LeetCode - Didi Labs 기출문제] 40. Combination Sum II
    saurus2
    saurus2
    Simple is Best

    티스토리툴바