반응형
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
- 파이썬 정렬
- 머신러닝
- 백준 알고리즘
- 사회조사분석사 2급
- 공모주청약
- 오미크론 자가격리
- 백준
- 그리디
- BFS
- 공모주 청약
- 알고리즘
- 사이킷런
- 사회조사분석사 2급 접수
- 공모주
- 사회조사분석사2급실기신청
- 시물레이션
- 사회조사분석사 2급 필기 공부방법
- 사회조사분석사 2급 필기 시험시간
- 사회조사분석사 2급 기출문제집
- 너비우선탐색
- 현대엔지니어링 수요예측
- 정렬
- 사회조사분석사 2급 공부방법
- 사회조사분석사 2급 필기 요약정리
- 사회조사분석사2급실기신청꿀팁
- 벽부수고이동하기 파이썬
- 사회조사분석사 2급 독학
- 현대엔지니어링
- DFS
- 2월공모주
Archives
- Today
- Total
세상을 바꾸는 데이터
[이코테 코드 리뷰] - 구현 예제 및 실전 문제 본문
이번 포스트에서는 "이코테"에 있는 구현 유형 예제 및 실전 문제를 공부하고 복습한 것을 코드로 적어본다.
코딩테스트 공부 - Github 사이트
https://github.com/ndb796/python-for-coding-test
예제 1) 상하좌우
# 상하좌우
n = int(input())
x, y = 1, 1
plans = input().split()
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인
for plan in plans:
# 이동 후 좌표 확인하기
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# 공간을 벗어난 경우 무시
if nx < 1 or nx > n or ny < 1 or ny > n:
continue
# 이동 수행
x, y = nx, ny
print(x, y)
예제 2) 시각
# 시각
h = int(input())
count = 0
for i in range(h+1):
for j in range(60):
for k in range(60):
# 매 시간 안에 '3'이 포함되어 있다면 카운트 증가
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
실전 1) 왕실의 나이트
# 왕실의 나이트
input_data = input()
row = int(input_data[1])
col = int(ord(input_data[0])) - int(ord('a')) + 1
# 나이트가 이동할 수 있는 방향
steps = [(2,1), (2, -1), (-2, 1), (-2, -1),
(1, 2), (-1, 2), (1, -2), (1, -1)]
count = 0
# 8가지 방향 이동가능한지 확인
for step in steps:
next_row = row + step[0]
next_col = col + step[1]
if next_row >=1 and next_row <=8 and next_col >= 1 and next_col <= 8:
count += 1
print(count)
실전 2) 게임 개발
# 게임 개발
n, m = map(int, input().split())
# 방문한 위치를 저장하기 위한 맵을 생성하여 0으로 초기화
d = [[0] * m for _ in range(n)]
# 현재 캐릭터의 x 좌표, y 좌표, 방향 입력받기
x, y, direction = map(int, input().split())
d[x][y] = 1 # 현재 좌표 방문 처리
# 전체 맵 정보를 입력받기
array = []
for i in range(n):
array.append(list(map(int, input().split())))
# 북, 동, 남, 서 방향 정의
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# 왼쪽으로 회전
def turn_left():
global direction
direction -=1
if direction == -1:
direction = 3
# 시물레이션 시작
count = 1
turn_time = 0
while True:
# 왼쪽으로 회전
turn_left()
nx = x + dx[direction]
ny = y + dy[direction]
# 회전한 이후 정면에 가보지 않는 칸이 있을 경우 이동
if d[nx][ny] == 0 and array[nx][ny] == 0:
d[nx][ny] = 1
x = nx
y = ny
count += 1
turn_time = 0
continue
# 회전한 이후 정면에 가보지 않는 칸이 없거나 바다인 경우
else:
turn_time += 1
# 네 방향 모두 갈 수 없는 경우
if turn_time == 4:
nx = x - dx[direction]
ny = y - dy[direction]
# 뒤로 갈 수 있으면 이동하기
if array[nx][ny] == 0:
x = nx
y = ny
# 뒤가 바다인 경우
else:
break
turn_time = 0
# 정답 출력
print(count)
게임 개발이 코드 작성하기가 가장 어려웠던 거 같다. 할 수는 있을 거 같은데 막상 하면 잘 안되고 코드가 복잡한 구현,,
다시 복습해야지...
교재 링크:
https://book.naver.com/bookdb/book_detail.nhn?bid=16439154
728x90
반응형
'PS Study > 이코테 문제풀이' 카테고리의 다른 글
[프로그래머스] 실패율 - 파이썬 (76) | 2022.03.03 |
---|---|
[백준 10825번] 국영수 - 파이썬 (61) | 2022.03.02 |
[백준 16234번] 인구 이동 - 파이썬 (59) | 2022.02.27 |
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 - 파이썬 (40) | 2022.02.01 |
Comments