본문 바로가기

개발/Python & Flask

코딩테스트 다시 준비 시작 - 구현 (ft. 파이썬)

2차원 공간 - 행렬

수학에서 0, 0 좌표는 좌측하단에서 시작하는데, 이와 다름.

흔히 아는 것과 정반대로, (y, x) 를 기억해야한다.

횡방향 움직임은 2번째 자리에, 종방향 움직임은 1번째 자리에.

 

방향벡터

 

LRUD 움직임 구현

# N 은 맵 크기 NxN
# D 는 움직임 방향. LRUD 중 하나.
# 크기 밖으로 나가면 무시

def main ():
	N = int(input())
	print("N = ", N)
	D = list(input().split())
	print("D = ", D)
	dx = [0, 0, -1, 1]
	dy = [-1, 1, 0, 0]
	dir = ['L', 'R', 'U', 'D']
	x, y = 1, 1
	for move in D:
		print(move)
		nx = dx[dir.index(move)]
		ny = dy[dir.index(move)]
		if(x + nx >= 1 and y + ny >= 1):
			x += nx
			y += ny
		print("(%d, %d)", x, y) 

main()

# 방향에 주의할 것.

https://github.com/gogoonbuntu/2021CodingTest_Guhyeon1

 

체스판 나이트 이동가능 경로

# 8X8 체스판에서 나이트의 위치 P 입력받기 (ex: C2)
# 나이트의 이동가능 위치 수 

def main():
	P = input()
	Moves = [(1, 2), (1, -2), (-1, 2), (-1, -2), (2, 1), (2, -1), (-2, 1), (-2, -1)]
	x = ord(P[0])-ord('a')+1
	y = int(P[1])
	count=0
	for Move in Moves:
		if x+Move[1]<=8 and x+Move[1]>0 and y+Move[0]>0 and y+Move[1]<=8:
			count+=1
			print(Move)

	print(count)
	
main()

https://github.com/gogoonbuntu/2021CodingTest_Guhyeon2

 

알파벳, 숫자 입력받기, 알파벳 정렬, 숫자 덧셈

# 문자열(숫자포함) 입력받으면, 알파벳은 순서정렬, 숫자는 다 더해서 마지막에 출력
# 마지막 부분을 간략하게 표현할 수 있을듯
# isalpha 함수 사용하면 됨.
num = 0
def func(i):
	global num
	ascii = ord(i)
	if ascii >= ord('0') and ascii <= ord('9'):
		num += int(i)
		
	else:
		return i

a = [i for i in list(map(func,sorted(input()))) if i]
s = ''
for i in a:
	s+=i
if(num>0) : s+=str(num)

print(s)

https://github.com/gogoonbuntu/2021CodingTest_Guhyeon3

 

 

 

본문은 참조링크 를 기반으로 정리했습니다.

 

 

 

도움이 되셨다면 ♡공감 ↓광고클릭으로 저를 응원해주세요!!! :D

 

반응형