Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준
- pytorch
- TF-IDF
- Tensor
- 부스트캠프
- 데이터
- 시각화
- 추천 시스템
- 머신러닝
- Overfitting
- 코딩테스트
- SGD
- Python
- selenium
- 파이썬
- 웹스크래핑
- codingtest
- wordcloud
- 웹크롤링
- recommendation system
- coursera
- 코테
- 추천시스템
- Cosine-similarity
- 협업 필터링
- 딥러닝
- 프로그래머스
- 분산 시스템
- 데이터 엔지니어링
- 알고리즘
Archives
- Today
- Total
개발자식
[프로그래머스] 키패드 누르기 본문
키패드 누르기
https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
- 왼손, 오른손으로 누를 키보드 번호를 딕셔너리로 저장한다.
- 해당 키보드의 위치를 딕셔너리로 저장한다.
- 현재 위치를 리스트로 저장한다.
- numbers를 순회하면서
1. 해당 번호가 왼손, 오른손으로 눌러야 하는 키보드 번호인지 확인한다.
2. 위 해당 사항에 없는 키보드인 경우 오른손, 왼손 각각의 위치와 이동할 위치의 거리를 구한다.
ex [1,1] [2,0] 사이의 거리 : |2-1| + |0-1| = 2
3. 거리가 작은 손으로 이동한다.
4. 거리가 같다면 hand값에 따라 처리한다.
* 이동할 때 마다 현재 위치 갱신
def solution(numbers, hand):
answer = ''
dict = {"L":[1,4,7],"R":[3,6,9]}
position = {1:[0,0],2:[0,1],3:[0,2],
4:[1,0],5:[1,1],6:[1,2],
7:[2,0],8:[2,1],9:[2,2],
"*":[3,0],0:[3,1],"#":[3,2]}
r = "*"
l = "#"
now = [r,l]
for n in numbers:
if n in dict["L"]:
answer+="L"
now[1] = n
elif n in dict["R"]:
answer+="R"
now[0] = n
else:
r1 = abs(position[n][0] - position[now[0]][0]) + abs(position[n][1] - position[now[0]][1])
l1 = abs(position[n][0] - position[now[1]][0]) + abs(position[n][1] - position[now[1]][1])
if r1 > l1:
answer += "L"
now[1] = n
elif r1 < l1:
answer += "R"
now[0] = n
else:
if hand == "right":
answer += "R"
now[0] = n
else:
answer += "L"
now[1] = n
return answer
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.08.22 |
---|---|
[프로그래머스] 완주하지 못한 선수 (0) | 2022.08.22 |
[프로그래머스] 성격 유형 검사하기 (0) | 2022.08.22 |
[프로그래머스] 여행 경로 (0) | 2022.08.20 |
[프로그래머스] 실전 모의고사 (1) (0) | 2022.08.19 |
Comments