programmers/level3 20

[프로그래머스] N으로 표현 (Python)

프로그래머스 level3 [동적계획법(Dynamic Programming)] N으로 표현 programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr dp문제는 유난히 풀이법을 찾기가 힘들다... 푸는법을 모르겠어서 검색해서 풀었다. 검색해서 풀이를 봤는데도 아직 좀 이해가 안돼서 나중에 다시 봐야할 것 같다. Python code 더보기 def solution(N, number): answer = 0 if N == number: return 1 s=[ set() for i in range(8)] for i,x in enumerate(s, start=1): x.add( int( str(N) * i ) ) for i..

programmers/level3 2021.03.11

[프로그래머스] 단속카메라 (Python)

프로그래머스 level3[탐욕법(Greedy)] 단속카메라programmers.co.kr/learn/courses/30/lessons/42884코딩테스트 연습 - 단속카메라[[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2programmers.co.kr 개인적으로 그리디 문제에 취약한 편이라서 이 문제를 처음 접할 때부터 자신이 없었다. 그래도 한 번 풀어보자 싶어서 노트에 먼저 알고리즘을 적어보고 코드를 짰는데 통과가 되었다. 사실 이게 왜 통과가 됐는지 잘 모르겠다... 알고리즘 짜면서 뭔가 부족하다 싶었는데 통과가 돼서 어리둥절한 기분이다. 프로젝트 하느라 하루종일 코드를 짰더니 머리가 아파서 더 생각하지 못하고 마무리 했다. Python code더보기def solution..

programmers/level3 2021.03.09

[프로그래머스] 가장 먼 노드 (Python)

프로그래머스 level3 [그래프] 가장 먼 노드 programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 처음에는 n*n의 크기로 리스트를 만들어서 연결된 노드간에는 1이, 연결 안 된 노드 간에는 0이 저장되도록 한 뒤 그 리스트를 사용하여 탐색을 했는데, 시간초과가 나서 다른 방법을 찾아야 했다. 그래서 grahp리스트를 n*n의 크기로 만들지 않고 빈 리스트로 만든 뒤에 edge를 돌며 연결된 노드만 추가되도록 만들었다. 그렇게 하니 메모리 사용량도 줄고, 실행시간도 단축할 수 있었다. Pyth..

programmers/level3 2021.03.08

[프로그래머스] 단어 변환 (Python)

프로그래머스 level3 [깊이/너비 우선 탐색(DFS/BFS)] 단어 변환 programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 문제를 처음 읽었을 때는 어떻게 풀어야 할 지 몰랐었는데, 문제분류를 보고 방향을 잡고 bfs를 사용하여 금방 풀 수 있었다. 알고리즘 1. words에 begin단어를 추가한다. 2. words에 target이 없다면 0을 리턴한다. 3. words에서 t..

programmers/level3 2021.03.03

[프로그래머스] 정수 삼각형 (Python)

프로그래머스 level3 [동적계획법(Dynamic Programming)] 정수 삼각형 programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 이 문제는 예전에 백준에서 푼 적이 있는 문제여서 바로 풀 수 있었다. Python code 더보기 def solution(triangle): for i in range(1,len(triangle)): for j in range(len(triangle[i])): if j==0: triangle[i][j]+=triangle[i-1][j] elif j==len(tri..

programmers/level3 2021.03.02