이숭간 공부기록
동빈나 2021 이코테_2-1.구현 (시뮬레이션, 완전탐색) 본문
728x90
- 구현 : 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 / 문제에서 요구하것이 구현에 맞춰져 있는문제들
- 즉 풀이를 떠올리는것은 쉽지만 소스코드로 옮기기 어려운 문제를 말함
- 예를들면 알고리즘은 간단한데 코드가 지나치게 길어지는문제
- 실수연산, 특정소수점자리까지 출력해야하는 문제
- 문자열을 특정한 기준에 따라 끊어 처리해야 하는 문제 ( 문자열처리는 파이썬이 강력함 )
- 적절한 라이브러리를 찾아 사용해야 하는 문제
예제문제 1 ) 상하좌우 이동시키기
내가 작성한 코드
n = int(input())
plan = list(input().split())
row = 1
line = 1
for move in plan:
if move == 'R':
if line == n:
continue
line +=1
elif move == 'U':
if row == 1:
continue
row -= 1
elif move == 'L':
if line == 1:
continue
line -= 1
elif move == 'D':
if row == n:
continue
row += 1
print(row, line)
동빈나님 정답코드
차이점 : 나는 if문을 4개써서 L,R,U,D를 체크한것과 달리 동빈나님은 배열을 써서 포문을 돌리면서 if문으로 체크함
공간에서 벗어나는 조건 확인하는 부분에서, nx와 같은 임시(?) 위치를 두고 그 위치가 벗어나면 원본위치를 바꾸지않고 넘어가는식으로함
나는 그냥 그떄그때 원본위치를 확인함
스위치문이 필요할것같은상황 = 포문+이프문
예제문제2 ) 시각_3이 하나라도있는 경우의수
내코드 : 전체가능한경우의수 - 3이 하나도 없는 경우의수
n = int(input())
all = (n+1)*60*60
if n>3:
k = n-1
else:
k = n
no_3 = 45*45*(k+1)
answer = all-no_3
print(answer)
동빈나님 코드 : 가능한 모든시각의 경우를 하나씩 모두 세서 품 : 단순히 시각을 1씩 증가시키면서 3이 하나라도 포함되어있는지 확인
전체를 다해도 24*60*60 = 86,400가지는 많은경우의수가 아니므로 충분히 빠른시간에 탐색가능
예제문제3) 왕실의 나이트 ( 나이트가 갈수있는 곳의 경우의수)
내코드 : 움직일수있는 8가지를 행, 열로 배열로 만든뒤 포문돌려서 모두 움직여본후, 움직일때마다 칸을 벗어낫는지 확인
리스트를 이용하여 방향벡터를 정의한다. ( 나이트가 이동할수 있는 8가지 방향 정의 dx, dy)
input = input()
n = input[0]
m = int(input[1])-1
list = ['a','b','c','d','e','f','g','h']
for i in range(len(list)):
if n == list[i]:
n = i
count = 0
dx = [1, -1, -2, -2, 1, -1, 2, 2]
dy = [2, 2, 1, -1, -2, -2, 1, -1]
for i in range(len(dx)):
nx = m+dx[i]
ny = n+dy[i]
if nx <0 or nx>8 or ny <0 or ny>8:
continue
count += 1
print(count)
동빈나님 정답코드
예제문제4) 문자열 재정렬 : 알파벳은 오름차순으로정렬하여 출력하고, 그뒤로 모든 숫자를 더한값을 출력
내코드 : 주의,, 변수이름 str같은 쓰이는 이름으로 짓지말자
data = input()
count = 0
list = []
for i in data:
if i.isdigit():
count += int(i)
else:
list.append(i)
list.sort()
print(''.join(list)+str(count))
동빈나님 정답코드
'알고리즘 > 알고리즘 기초공부' 카테고리의 다른 글
동빈나 2021 이코테_5. 이진 탐색 (0) | 2021.02.10 |
---|---|
동빈나 2021 이코테_4. 정렬알고리즘 (0) | 2021.02.04 |
동빈나 2021 이코테_3.DFS & BFS (0) | 2021.02.04 |
동빈나 2021 이코테_ 1. 코테 출제경향 + 파이썬문법 (0) | 2021.02.01 |
동빈나 2021 이코테_2-1. 그리디 알고리즘 (0) | 2021.02.01 |