[Programmers] 키패드 누르기 / 정수 제곱근 판별 / 제일 작은 수 제거하기 / 짝수와 홀수 (python)
13830 단어 pythonprogrammersalgorithmalgorithm
🌴 키패드 누르기
해결 전략
numbers
: 순서대로 누를 번호가 담긴 배열
hand
: 왼손잡이(left)인지 오른손잡이(right)인 지를 나타내는 문자열
- 주어진 키패드 모습은 다음과 같으므로,
1 | 2 | 3 |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
* | 0 | # |
아래와 같이 좌표 부여
[0,0] | [0,1] | [0,2] |
---|---|---|
[1,0] | [1,1] | [1,2] |
[2,0] | [2,1] | [2,2] |
[3,1] |
- 누를 번호가 왼쪽(1,4,7), 오른쪽(3,6,9)인 경우
주어진 조건에 맞게 tmp=L,R 부여 후 손가락 위치 재부여 - 누를 번호가 가운데(2,5,7,0)인 경우
현재 왼손(l)/오른손(r) 위치에서 누를 번호(n)까지 이동거리 구한 후
3-1. 거리가 다른 경우, 주어진 조건에 맞게 tmp=L,R 부여 후 손가락 위치 재부여
3-2. 거리가 같은 경우, tmp=hand의 첫문자(l,r)에 upper()한 값 - 차례대로 answer에 tmp값 추가해주고 return
Source Code
def solution(numbers, hand):
answer = ''
l,r= [3,0], [3,2] #초기 손가락 위치
#키패드
keys=[[3,1],
[0,0],[0,1],[0,2],
[1,0],[1,1],[1,2],
[2,0],[2,1],[2,2]]
for n in numbers:
#왼쪽 열
if n in [1,4,7]:
tmp='L'
l=keys[n]
#오른쪽 열
elif n in [3,6,9]:
tmp='R'
r=keys[n]
#가운데 열
else:
# 왼 오 거리
l_dist= abs(keys[n][0]- l[0]) + abs(keys[n][1]- l[1])
r_dist= abs(keys[n][0]- r[0]) + abs(keys[n][1]- r[1])
if l_dist!=r_dist: #거리다를때
if l_dist<r_dist:
tmp='L'
l=keys[n]
else:
tmp='R'
r=keys[n]
else: #거리 동일
tmp= hand[0].upper()
if tmp=='L':
l=keys[n]
else:
r=keys[n]
answer+= tmp
return answer
🌴 정수 제곱근 판별
해결 전략
n
: 1이상, 50000000000000 이하인 양의 정수
- tmp에 제곱근(n) 저장하고
- int를 취해 준 값과 동일하면 제곱근을, 아니라면 -1 return
Source Code
def solution(n):
tmp = n**(1/2)
return (tmp+1)**2 if int(tmp)==tmp else -1
🌴 제일 작은 수 제거하기
해결 전략
arr
: 길이 1 이상인 배열
- min(arr) 제거 후 return
- 최초 arr의 길이가 1인 경우 [-1] return
Source Code
def solution(arr):
arr.remove(min(arr))
return arr if arr!=[] else [-1]
🌴 짝수와 홀수
해결 전략
num
: int 범위의 정수, 0은 짝수로 취급
- 2로 나눈 나머지 1이면 Odd, 아니면 Even return
Source Code
def solution(num):
return 'Odd' if num%2!=0 else 'Even'
Author And Source
이 문제에 관하여([Programmers] 키패드 누르기 / 정수 제곱근 판별 / 제일 작은 수 제거하기 / 짝수와 홀수 (python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yourmean/Programmers-키패드-누르기-정수-제곱근-판별-제일-작은-수-제거하기-짝수와-홀수-python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)