- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64061
Level1 문제이고, 스스로 푼 문제다
basket에서 top에 있는 수와 다른지를 확인해야하고, indexError를 피하기 위해서 인형이 아닌 -1을 먼저 basket의 인덱스 0으로 넣어놨다
첫번째 문제
크레인이 임의로 움직이는 줄 알고, 그 움직임을 파악하기가 어려웠다
근데 문제를 잘 읽어보니 크레인이 움직이는 열이 moves 리스트로 주어졌고, 그 열을 따라 아래로 움직이다가 인형을 발견하면 옮기는 것이었다 (문제를 꼼꼼히 읽자)
두번째 문제
그래서 moves에 주어진 열의 행들을 조사하는데, 주어진 행렬은 모두 0부터 시작하는데, 문제에서는 열이 1부터 시작하므로
주어진 열 -= 1을 하지 않아서 IndexError를 냈다
세번째 문제
처음에는 while문으로 해당 열에서 인형의 행을 구하려했는데 계속 IndexError가 나서 for문으로 바꿨더니 error 없이 81%까지 맞았다
네번째 문제
2 / 11 만큼 틀리는지 알려고 VsCode를 돌렸는데, 1열에서 인형이 없는데 1열로 움직이는 경우가 있는데 이것에 대한
분류를 하지 않았다. 인형이 없으면 아무것도 하지 않는 로직을 만들어야 했다
그래서 flag를 활용해서 flag가 True인 경우면 크레인을 실행하도록 했더니 정답이 떴다
- 정답 풀이 :
def solution(board, moves):
n = len(board)
m = len(board[0])
basket = [-1]
count = 0
for col in moves: #움직이는 열
row = 0
col -= 1
flag = False
for row in range(n):
if board[row][col] != 0:
flag = True
break
if not flag:
continue
elif board[row][col] != basket[-1] :
basket.append(board[row][col])
board[row][col] = 0
elif board[row][col] == basket[-1]:
basket.pop()
count += 2
board[row][col] = 0
return count
- 시도해본 풀이 :
81 / 100 에서 틀렸다
def solution(board, moves):
n = len(board)
m = len(board[0])
basket = [-1]
count = 0
for col in moves: #움직이는 열
row = 0
col -= 1
for row in range(n):
if board[row][col] != 0:
break
if board[row][col] != basket[-1]:
basket.append(board[row][col])
else:
basket.pop()
count += 2
board[row][col] = 0
print(basket)
return count
'프로그래머스 > Level1' 카테고리의 다른 글
[완전탐색 / 프로그래머스] 42840번 : 모의고사 (0) | 2022.08.20 |
---|---|
[정렬 / 프로그래머스] 42748번 : K번째 수 (0) | 2022.08.20 |
[2022 KAKAO TECH INTERNSHIP/ 프로그래머스] 18666번 : 성격 유형 검사하기 (0) | 2022.08.19 |
[2021 카카오 채용연계 인턴십] 81301번 : 숫자 문자열과 영단어 (0) | 2022.08.17 |
[완전탐색/ 프로그래머스] 86491번 : 최소 직사각형 (0) | 2022.08.17 |