황찌옹
정리왕옹옹
황찌옹
GitHub Contribution
Loading data ...
  • 분류 전체보기 (158)
    • [ 알고리즘 ] (96)
      • Implementation (24)
      • Brute Force (6)
      • String (4)
      • Greedy (14)
      • DFS, BFS (13)
      • Back Tracking (4)
      • Sort & Binary Search (6)
      • DP (8)
      • Shortest Path (5)
      • Hash (3)
      • Stack, Queue (4)
      • Heap (1)
      • Tree (1)
      • Mathematics (1)
      • Ad-Hoc (1)
      • 기타 (COS Pro, etc) (1)
    • [ 언어 및 문법 ] (23)
      • Python (5)
      • C, C++ (13)
      • SQL (1)
      • 공통 개념(CS) (4)
    • [ Error ] (21)
      • Radiomics Feature Extraction (6)
      • CT Skin Segmentation (12)
      • etc (3)
    • [ Git ] (7)
    • [ 환경 설정 및 기타] (6)
    • [ 공부 ] (2)
      • AI, ML (0)
      • Computer Vision (0)
      • Image Processing (1)
      • QT (0)
      • AWS (1)
      • 의료 (0)
    • [ 포트폴리오 ] (1)
      • 🙋‍♀️자기 소개🙋‍♀️ (1)
      • 프로젝트 (0)
      • 공모전 (0)
      • 자격증 (0)
      • 대내외활동 (0)
      • 논문 (0)
      • 교육 봉사 (0)
    • [ 취준 ] (2)
      • 채용 설명회, 직무 상담 (1)
      • 취준 후기 (1)

블로그 메뉴

  • ❤️깃허브❤️

인기 글

태그

  • config
  • aws
  • cos pro
  • configuration
  • keras
  • numpy
  • tensorflow
  • Anaconda
  • QT
  • cs
  • git
  • 모두의코드
  • Visual Studio
  • SQL
  • OpenCV
  • Python
  • pyplot
  • c++
  • Cloud
  • 씹어먹는C++

최근 댓글

최근 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
황찌옹

정리왕옹옹

[백준] 20436. ZOAC 3
[ 알고리즘 ]/Implementation

[백준] 20436. ZOAC 3

2022. 8. 2. 20:17

 

📌문제

 

20436번: ZOAC 3

첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의

www.acmicpc.net

 

🎖️난이도

 

✔️풀이

sl, sr = input().split() # z, o
string = input() # zoac

keyboard = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]

def getXY(s):
    for i in range(len(keyboard)):
        tmp = keyboard[i].find(s)
        if tmp == -1:
            continue     
        x, y = i, tmp
            
    return [x, y]


time = len(string) # 4
lx, ly = getXY(sl) # [2, 0] => 왼손(자음) 초기
rx, ry = getXY(sr) # [0, 8] => 오른손(모음) 초기

for s in string:
    x, y = getXY(s) # 새로 칠 문자
    # 모음
    if y >= 5 or [x, y] == [2, 4]: # ***함정***
        time += abs(rx-x) + abs(ry-y)
        rx, ry = x, y
    # 자음
    else:
        time += abs(lx-x) + abs(ly-y)
        lx, ly = x, y
    
print(time)

 

🧠노트

키보드에서 모음, 자음 위치 구분할 때,

"b(ㅠ)" 에 해당하는 놈의 위치만 주의해주는 것이 함정!!!

 

또한, 각 문자의 키보드 위치([x, y])를 구하는 것은 따로 함수로 빼두었다. (getXY)

 

🔍참고

[ find(), index() 차이점 ]

둘 다 위치(index)를 return 해주는 함수라는 공통점이 있다.

 

1. find()

  • 없으면 -1 return
  • only 문자열 함수! (string.find(' '))
    • 리스트, 튜플, 딕셔너리는 사용 불가

 

2. index()

  • 없으면 error
  • 문자열, 리스트, 튜플에서 모두 사용 가능!
    • 딕셔너리는 사용 불가

 

 

'[ 알고리즘 ] > Implementation' 카테고리의 다른 글

[기타] 마스크 연산같은 다이아몬드 배열 구현  (0) 2022.09.24
[백준] 1283. 단축키 지정  (0) 2022.08.04
[백준] 14467. 소가 길을 건너간 이유  (0) 2022.08.02
[백준] 12933. 오리  (0) 2022.08.02
[백준] 20918. 전구  (0) 2022.08.01
    황찌옹
    황찌옹
    다 정리해버리꺼야

    티스토리툴바