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 |
Tags
- 직박구리과
- AI역량평가
- 딥러닝공부
- AI전략게임
- 오리과
- structured_array
- 생일문제
- 한국의 새
- 비둘기목
- SimpleCraft
- 솔딱새과
- 한국의새
- 딥러닝 공부
- 계수정렬
- 흰날개해오라기
- IBK기업은행 인턴
- 비둘기과
- 기러기목
- keras
- Birthday paradox
- ADsP
- 참새과
- 백로과
- 딱다구리과
- django
- python3
- 맑은소리 스피치학원
- 가마우지과
- Python
- 참새목
Archives
- Today
- Total
진박사의 일상
[이코테] 구현 문제 - 4문제 본문
문제 : 상하좌우. NxN 범위에서 상하좌우 입력을 받아 이동 후 좌표를 구하라. (LRUD 입력, 벽에 막히면 무시)
n = int(input())
directions = list(input().split())
index = [1,1]
for d in directions:
if d == 'L':
index[1] -= 1
elif d == 'R':
index[1] += 1
elif d == 'U':
index[0] -= 1
elif d == 'D':
index[0] += 1
else:
pass
if index[0] < 1:
index[0] = 1
elif index[0] > n-1:
index[0] = n-1
elif index[1] < 1:
index[1] = 1
elif index[1] > n-1:
index[1] = n-1
print(index)
너무 그냥 막코딩했다 ㅋㅋㅋ 비효율적... ctrl+c, ctrl+v
문제 : 3이 들어가 있는 시각
n = int(input())
sec = (n+1)*60*60
result = 0
for t in range(sec):
time = t//(60*60)
min = (t - time*3600) // 60
sec = (t - time*3600 - min* 60) % 60
#print(str(time)+str(min)+str(sec))
if "3" in str(time)+str(min)+str(sec):
#print(time, min, sec)
result += 1
print(result)
평범하게 쉽게 품
문제 : 체스 나이트가 움직일 수 있는 경우의 수
def check_index(index):
if index[0] < 0 or index[0] > 7 or index[1] < 0 or index[1] > 7:
return False
else:
return True
index = input()
col, row = index[0], int(index[1])
#preprocessing
cols = ['a','b','c','d','e','f','g','h']
col = cols.index(col)
row -= 1
index = [col, row]
result = 0
steps = [[-2, -1],[-2, 1],[-1, 2],[1, 2],[2, 1],[2, -1],[1, -2],[-1, -2]]
for step in steps:
if check_index([index[0]+step[0], index[1]+step[1]]):
result += 1
print(result)
steps를 리스트로 만드는 건 책을 참고했다. 저렇게 하는게 더 나은 방법이라는 걸 깨달음
문제 : 게임 개발. 1=바다, 0=길 일때 길 중에서 1. 반시계 90도 방향부터 차례로 갈 곳을 정함. 2. 못가는 곳이 아닌 가보지 않은 곳으로 이동. 만약 못 간다면 1번으로 돌아감 3. 다 가본 곳이라면 한칸 뒤로 움직임.
n, m = [int(i) for i in input().split()]
nx, ny, d = [int(i) for i in input().split()]
pos = [nx, ny] #현위치
map = []
have_to_go = 0 #have to go field #
for i in range(n):
map.append([int(j) for j in input().split()])
have_to_go += map[i].count(0)
result = 0
directions = {0: [0, -1], 1: [1, 0], 2: [0, 1], 3: [-1, 0]}
try_pos = 0 # 4 방향 검사
end_flag = False
map[pos[0]][pos[1]] = 2 # 시작점은 방문 완료
result += 1
while result != have_to_go:
pos_to_go = pos
map_to_go = 1
while map_to_go in [1,2]: #갈 수 없으면
pos_to_go = [pos[0] + directions[d][0], pos[1] + directions[d][1]]
map_to_go = map[pos_to_go[0]][pos_to_go[1]]
#print(pos, d, pos_to_go)
d = (d+1)%4 # 위치 바꾸기
try_pos += 1
if try_pos != 4:
continue
else: #4방향을 다 가봐도 갈 수 있는 길이
backward = map[pos[0]-directions[d][0]][pos[1]-directions[d][1]]
if backward == 2: #가본곳이면
pos = backward
try_pos = 0
continue
else: #바다면
end_flag = True
break
if end_flag:#더 이상 이동 불가능
break
else: # 갈 수 있으면
#print(pos, d, pos_to_go, map_to_go)
try_pos = 0 #초기화
pos = pos_to_go #이동
map[pos_to_go[0]][pos_to_go[1]] = 2 #갔음 체크
result += 1 #이동횟수 증가
print(result)
고려할 게 많아서 상당히 애먹었지만 구현 자체는 어렵진 않았던 느낌
'프로그래밍 > 코딩테스트 공부' 카테고리의 다른 글
[프로그래머스] 완전 탐색 문제 - 모의 고사 (0) | 2021.09.08 |
---|---|
[프로그래머스] 위클리 챌린지 6주차 (0) | 2021.09.08 |
[프로그래머스] Greedy 문제 - 조이스틱 (0) | 2021.09.07 |
[프로그래머스] Greedy 문제 - 체육복 (0) | 2021.09.06 |
[이코테] Greedy 문제 - 6. 무지의 먹방 라이브 (0) | 2021.09.06 |