꾸준히 하루에 한문제씩 풀면서 코드업 기초 100제를 마무리 했습니다. 성실한 개미 문제가 제일 오래걸렸네요. 확실히 머신러닝이나 데이터분석과는 다르게 직접 코딩하면서 알고리즘 짜는 것이 저한테는 많이 어려웠습니다.
이번 문제는 특히 파이썬에서는 잘 돌아갔는데, 코드업 사이트 내 테스트케이스에서 계속 아웃풋이 안나와서 처음 입력하는 코드를 바꿨더니 잘 출력이 되었습니다.
# 최종정답
maze = []
for i in range(10):
m = [int(x) for x in input().split()]
maze.append(m)
i = 1
j = 1
while True :
if maze[i][j] == 2 :
maze[i][j] = 9
break
elif maze[i+1][j] == 1 and maze[i][j+1] == 1 :
maze[i][j] = 9
break
maze[i][j] = 9
if maze[i][j+1] == 1 :
i += 1
elif maze[i+1][j] == 1 :
j += 1
else :
j += 1
for a in range(10) :
for b in range(10) :
print(maze[a][b], end = ' ')
print()
아래 코드는 위 코드와 다르게 문제에서 주어진 예시를 복사하여 input에 넣었을때 해결되는 코드입니다.
maze = [[0 for c in range(10)] for r in range(10)]
x = list(map(int, input().split()))
for r in range(10) :
for c in range(10) :
maze[r][c] = x[(r*10)+c]
i = 1 # 인덱싱할때 1 더하는게 귀찮아서 아예 1로 설정
j = 1
while True :
if maze[i][j] == 2 :
maze[i][j] = 9
break
elif maze[i+1][j] == 1 and maze[i][j+1] == 1 :
maze[i][j] = 9
break
maze[i][j] = 9
if maze[i][j+1] == 1 :
i += 1
elif maze[i+1][j] == 1 :
j += 1
else :
j += 1
for a in range(10) :
for b in range(10) :
print(maze[a][b], end = ' ')
print()
코드업 기초 예제들을 풀으면서 느꼈던 점은,
1. 반복은 루프로
2. 기본기의 중요성
3. 안다고 다 아는게 아님
이었습니다.
알고리즘 공부도 꾸준히 해야한다는 좋은 경험이었습니다.
'매일매일 (Everyday)' 카테고리의 다른 글
[알고리즘] - 동적계획법 (Dynamic programming) (0) | 2021.10.20 |
---|---|
[알고리즘] - 그리디 알고리즘 (Greedy Algorithm) (0) | 2021.09.01 |
경고 메시지 숨기기 (warnings) (0) | 2021.08.21 |
[코드업 기초 100제] - map( ) 활용 - Python (0) | 2021.08.16 |
간단한 전처리를 활용하여 법 3단비교를 행방향으로 만들기 (0) | 2021.07.07 |