250x250
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 | 31 |
Tags
- gitignore
- cte
- AI 5기
- venv
- 함수성능평가
- Level1
- position
- WIL
- googleappscript
- googlesheet
- A태그
- with\
- git #github #내일배움캠프
- 가상환경
- time()
- 함수실행시간
- 내일배움캠프
- 알고리즘
- python
- iterable
- 데이터넥스트레벨챌린지
- vscode
- itertools
- 그로스해킹
- 우선순위
- Iterator
- 데이터리안
- Display
- 데벨챌
- 프로그래머스
Archives
- Today
- Total
05의 개발 계발
[페어프로그래밍] 230425 캐릭터의 좌표 | if for max min int / abs dict 본문
내일배움캠프 AI/페어프로그래밍
[페어프로그래밍] 230425 캐릭터의 좌표 | if for max min int / abs dict
생각하는 코댕이 2023. 4. 25. 23:20728x90
페어프로그래밍 결과 코드
# 페어프로그래밍으로 제작한 코드
def solution(keyinput, board):
[X,Y] = board #맵의크기
[X,Y] = [int((X-1)/2),int((Y-1)/2)] #맵의허용범위크기
[x,y] = [0,0] #처음좌표
for i in keyinput: #입력방향에 따른 조작 구현
if i == "up":
[x,y] = [x,min(y+1,Y)] #맵의 범위를 넘지않도록
elif i == "down":
[x,y] = [x,max(y-1,-Y)]
elif i == "left":
[x,y] = [max(x-1,-X),y]
elif i == "right":
[x,y] = [min(x+1,X),y]
answer = [x,y]
return answer
더보기
# 테스트용 코드
import os
os.system("cls")
def solution(keyinput, board):
[X,Y] = board #맵의크기
[X,Y] = [int((X-1)/2),int((Y-1)/2)] #맵의허용범위크기
[x,y] = [0,0] #처음좌표
for i in keyinput: #입력방향에 따른 조작 구현
if i == "up":
[x,y] = [x,min(y+1,Y)] #맵의 범위를 넘지않도록
elif i == "down":
[x,y] = [x,max(y-1,-Y)]
elif i == "left":
[x,y] = [max(x-1,-X),y]
elif i == "right":
[x,y] = [min(x+1,X),y]
answer = [x,y]
return answer
############ 테스트케이스 ##############
keyinput1 = ["left", "right", "up", "right", "right"]
board1 = [11, 11]
# [2,1]
keyinput2 = ["down", "down", "down", "down", "down"]
board2 = [7, 9]
# [0, -4]
print("1번정답 [2,1] |",solution(keyinput1, board1))
print("2번정답 [0,-4] |",solution(keyinput2, board2))
흠터레스팅 코드
# 1번 | // 몫 연산자를 통해 연산 , dict를 통해 데이터를 저장 , abs를 통해 절대값으로 비교
def solution(keyinput, board):
x_lim,y_lim = board[0]//2,board[1]//2
move = {'left':(-1,0),'right':(1,0),'up':(0,1),'down':(0,-1)}
x,y = 0,0
for k in keyinput:
dx,dy = move[k]
if abs(x+dx)>x_lim or abs(y+dy)>y_lim:
continue
else:
x,y = x+dx,y+dy
return [x,y]
# 2번 | // 몫 연산자를 통해 연산 , 삼항연산자 사용 , 변수재사용으로 변수정의를 최소화 한 부분이 인상적
def solution(keyinput, board):
output = [0, 0]
for key in keyinput:
if key == 'left':
output[0] = output[0] - 1 + (1 if -output[0] == board[0] // 2 else 0)
elif key == 'right':
output[0] = output[0] + 1 - (1 if output[0] == board[0] // 2 else 0)
elif key == 'down':
output[1] = output[1] - 1 + (1 if -output[1] == board[1] // 2 else 0)
elif key == 'up':
output[1] = output[1] + 1 - (1 if output[1] == board[1] // 2 else 0)
return output
시사점 or 새로이 알게된 점
abs(<number>)
- 정의 | 내장함수
- 사용법 | abs(숫자입력)
- 결과 | 입력한 숫자의 절댓값으로 변환
- Type | 입력한 숫자의 type을 따라감
728x90
'내일배움캠프 AI > 페어프로그래밍' 카테고리의 다른 글
[페어프로그래밍] 230426 피보나치 수 | 다중할당 for (1) | 2023.04.27 |
---|---|
[페어프로그래밍] 230426 문자열 정렬하기(2) | lower sorted join (0) | 2023.04.27 |
[페어프로그래밍] 230424 안전지대 | set for if len list range (0) | 2023.04.24 |
[페어프로그래밍] 230421 인덱스바꾸기 + 배열의 유사도 | 컴프리헨션, python 다중할당 (0) | 2023.04.21 |
[페어프로그래밍] 230420 하샤드 수 | for sum if (코루틴적용) (0) | 2023.04.20 |