Recent Posts
Tags
- r
- 기초다지기
- SQL
- 코딩테스트 python
- DB
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- python
- Ai
- 난생처음 R코딩&데이터 분석 저서
- 네이버부스트캠프
- Oracle
- 오라클
- 데이터베이스
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- boostcoures
- AI 플랫폼을 활용한 데이터 분석
- 빅데이터분석기사
- 인공지능기초다지기
- 코딩테스트
- 부스트코스
- 프로그래머스
- Machine Learning
- 정보처리기사
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- PY4E
- 빅분기
- 파이썬
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- boostcourse
- 이기적
- Today
- Total
매일공부
[코딩테스트 python] 왕실의 나이트; 문자를 int로 변경[ord] 본문
출처 [저서] : 이것이 취업을 위한 코딩테스트다 with 파이썬
# 문제
나이트 이동 가능한 방향
- 수평 2칸 > 수직 1칸
- 수직 2칸 > 수평 1칸
현 좌표가 주어졌을 때 나이트가 이동가능한 경우의 수는?
x : a~h
y : 1~8
# 풀이
1. 나이트가 이동가능한 좌표 정의
steps = [(-1,2), (1, 2), (-1,-2), (1, -2), (-2, 1), (-2, -1), (2, 1), (2, -1)]
2. x 좌표의 연속된 알파벳 > int 변환
1) x의 알파벳을 수작업으로 정의 후 인덱스를 활용하여 변환
x_list = ['a','b','c','d','e','f','g','h']
now = list(map(int, [x_list.index(xy[0])+1, xy[1]]))
2) 교재 = 유니코드(ord) 활용
: (현재 위치의 알파벳 유니코드) - (첫 시작위치인 'a'의 유니코드 97) + 1
now = [int(ord(xy[0]))-int(ord('a'))+1, int(xy[1])]
> 확실히 유니코드 사용은 익숙하지 않아서 생각조차 못 함 👍
> 훨씬 간결하고, 연속된 문자라면 어디서든 활용 가능하니 꼭 기억!! ⭐⭐
3. 현재위치에서 이동가능한 모든 나이트의 위치 찾기
cnt = 0
for step in steps:
x = now[0] + step[0]
y = now[1] + step[1]
if x>0 and y>0 and x<9 and y<9: # 모두 (0 <x, y< 9)면 이동 가능한 위치
cnt += 1
> 단, x y의 범위를 넘어가면 이동 불가. 이 부분 check 필수
[참고]
유니코드를 문자열로 변경 : chr()
'Programming > 코딩테스트' 카테고리의 다른 글
[코딩테스트 python] 구현; 완전탐색, 시뮬레이션 알고리즘 (2) | 2023.04.27 |
---|---|
[코딩테스트 python] 그리디 Greedy; 1이 될 때까지 (0) | 2023.04.25 |
[코딩테스트 python] 그리디 Greedy; 숫자 카드 게임 (0) | 2023.04.24 |
[코딩테스트 python] 그리디 Greedy ; 큰수의 법칙 (0) | 2023.04.23 |
[코딩테스트] python 주요 라이브러리 정리 (0) | 2023.04.20 |
Comments