코딩: 말하기 듣기 쓰기-2
Pascal's triangle
https://leetcode.com/explore/learn/card/array-and-string/202/introduction-to-2d-array/1170/
문제 보자마자 드는생각: 이게 리트코드에서 러닝섹션에 떡하니 있었다. 보자마자 당연히 for문을 기본적으로 생각을했다. 그다음에 1들 왼쪽오른쪽 합이 그 밑에 추가된다. 이걸 어떻게 해야하는지 생각을 많이 해봤지만 역시 실패. 내가 생각한것은 우선 0번째 1번째 인덱스는 무조건 [1] 이랑 [1, 1] 이걸로 해줘야한다 무조건. 그리고 나서 밑에 for문을 돌려서 어떻게 저렇게 만들지 생각을 해야하는데 도저히 모르겠다.
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
'''
input: numRows = 5, output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
'''
pascal = [[1], [1, 1]]
if numRows <= 2:
if numRows == 0:
return pascal
elif numRows == 1 or numRows < 0:
return pascal[:1]
for _ in range(3, numRows + 1):
li = [1]
for n in range(1, len(pascal[-1]) + 1):
li.append(sum(pascal[-1][n-1:n+1]))
pascal.append(li)
return pascal
우선 이 방식을 그대로 따라가기로했다. 당연히 모르면 그렇게 해야지. 맨 밑에 for부분들이 굉장히 중요하게 느껴졌다. 나는 항상 for문에서 다 만들어져 나와서 리턴을 하려고 하지만, 이번 for문 풀이는 뭔가 덧붙이는 느낌이다.
프로그래머스-방문길이
문제보자마자 드는생각:
첫번째, 보자마자 아 이건 방향을 바꿔주는 네비기능 코드가 필요하다. 두번째, 이것을 바탕으로 인풋값으로 이동을하고, 문제에서 설명해주었듯이 갔던길을 가는 것은 없애는 방향으로 해야한다. 세번째, 중복된것을 없앤채로 넣을 주머니와, 순간순간 값을 넣어야할 주머니를 준비한다. 그래서 생각해 냈던 것이 스택. 하지만 아쉽게도 스택과는 거리가 먼 코드를 짰었다. 아무튼 네번째, 중복된것을 없애줄때, 이것을 미리 없애주는 것이 어떠한가? 라는 생각을 했다. 문제를 보면 갔던 방향을 없애주는 방향으로 생각을 해야하는데, 이걸 미리 없애주면 어떨까? 라는 생각이 들어 중복문자 생략을 생각했다.
def solutions(dirs):
dxs, dys = [-1, 0, 1, 0], [0, -1, 0, 1]
d = {"U":0, "L":1, "D":2, "R":3}
visited = set()
answer = 0
x, y = 0, 0
for dir in dirs:
i = d[dir]
nx, ny = x + dxs[i], y + dys[i]
if nx<-5 or nx>5 or ny<-5 or ny>5: continue
if (x, y, nx, ny) not in visited:
visited.add((x, y, nx, ny))
visited.add((nx, ny, x, y))
answer += 1
print((x, y, nx, ny), (nx, ny, x, y))
x, y = nx, ny
return answer
나는 d를 저렇게 이쁘게 짜지 못했다. 나는 단순히 if문으로 전문용어로 "갈겼다" 라고 말할 수 있을 것 같다. 여기서 내가 생각하는 빅 포인트는, 방향, 중복, 조건을 주머니에 넣는것 이렇게 세가지라고 본다. 아직도 갈길이 먼듯..어쨌든...해야지뭐
Author And Source
이 문제에 관하여(코딩: 말하기 듣기 쓰기-2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bright_root/코딩-말하기-듣기-쓰기-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)