본문 바로가기

프로그래머스66

프로그래머스 Lv2 모음사전 (python) 모음사전 풀이 완전탐색문제이고, 문제를 보니 재귀로 풀어도 깊이 문제가 생기지 않을 것이라고 확신했기에 재귀로 풀었다. 따라서 for 문을 사용한 재귀를 사용하였고, 프로그래머스 문제의 특성상 global을 많이 사용하게 되어 머리가 잠시 삐로롱 되었지만, 금방 풀 수있었다. 초기에 필요한 변수들을 초기화해주고, solution에서도 초기화 과정을 거쳐준다. 그리고 aeiou에 매개변수로 string의 length인 number, 문자열, 찾고 있는 문자열로 3개의 매개변수를 이용했다. aeiou를 for문으로 돌면서 모음사전인 vowel_dictionary에 추가 시키기로 했다.(지금보니 안해도 되는 과정이었다.) 그리고 index를 +1 해주면서, 몇 번째에 찾는 단어가 현재의 단어인지 확인하는 과정.. 2024. 2. 23.
프로그래머스 Lv2 행렬의 곱셈 (python) 행렬의 곱셈 풀이 문제가 무슨 아무 설명도 없어서 뭐 어떻게 풀라고 하다가, 질문하기에 있는 내용을 보고 행렬의 곱셈이라는 수학 공식이 있음을 알고 풀었다. lv2로 오고 나서는 내 머리가 지끈 거린다. 단순 머리로만은 못 풀고 이젠, 손도 같이 써서 작업을 해야 할 듯하다. arr1의 길이 즉 행을 a로 반복하고, arr2 [0]의 길이 즉 arr2의 열을 반복하면서 더할 값을 넣어두고, arr2의 길이 즉 arr2의 행을 반복하면서 값들을 곱하고 더해주고 빠져나오면 tmp_row에 넣어준다. 글을 작성하면서도 괜히 헷갈린다. def solution(arr1, arr2): answer = [] for a in range(len(arr1)): tmp_row = [] # 각 행에 대한 결과를 저장할 임시 .. 2024. 2. 18.
PCCE 치고나서 느낀 점(멸...망....흑흑) PCCE 후기 방금 PCCE 시험을 치고 왔다. 기출문제랑 모의고사에선 음. 이 정도면 당연히 lv4는 그냥 맞겠군 했는데,,,, 직접 맞닥드리니 아니었다. 우선 캠으로 하다보니, 중간에 뭐가 문제였는진 몰라도 화면 공유와 캠이 제대로 작동을 안 해서, 그것 재설정한다고 시간이 몇 분 빼먹었다. 그리고 디버깅 난이도가 왜 어렵지...? 문제를 읽고 다시 하는데 읽히지도 않고, 읭스럽게 있다가 하나씩 만져보다가 고치고 그랬다. func 집어넣는 문제는 내가 생각한 대로 안풀려서 제출도 못했다. 위에 내용들 때문에 시간 관리 잘 못해서, 마지막 직접 푸는 문제에서 15분 동안 2문제를 풀게 생겼는데, 1문제는 금방 풀었다지만, 나머지 1문제는... 분명! 다 풀!었!는!데! 답이 계속 이상하게 나왔다. 내 .. 2024. 2. 18.
프로그래머스 Lv2 하노이의 탑 (python) 하노이의 탑 풀이 재귀로 풀어야 된다는 것도 알고 있었고, 이전 홀수나 짝수에 쓰였던 값이 다음 홀수, 짝수 값에서 재사용된 다는 것도 알고 있었지만, 어떻게 구현을 해야 하는지 계속 골골대다가 결국은 힌트를 보고 풀었다. 아직 내 머리는 이런 알고리즘들을 제대로 구현해내는 것이 불가능한가... 더 빨리 성장시켜서 예전에 이 정도는 껌으로 풀던 시절로 돌아가야지. 내 기존 풀이법은 완전탐색처럼 하는 방법이었으나, 그러니까 재귀함수가 너무 깊이 들어가서 실패를 계속했다. 그러다 보니 내가 바라보던 풀이 방식에서는 풀리지가 않았다. 그래서 힌트를 찾아보니 아래처럼 풀어야하는 것이 정석인 듯했다. 후.... 코드가 엄청 짧은 것을 보니 아직 내 실력은 한참이군.. 흑 잘 키우던 캐릭터가 사망하고 1 레벨부터 .. 2024. 2. 17.
프로그래머스 Lv2 전력망을 둘로 나누기 (python) 전력망을 둘로 나누기 풀이 사실 어떻게 풀어야 하는지 도저히 감이 안 와서 결국 남의 힘을 빌렸다. 처음에는 일단 행렬을 만들고 dfs나 bfs로 풀어야 한다는 것은 알았지만, 구현을 어떻게 해야 하는지 답이 안 나와서 힘을 빌려 아래처럼 제출했다. def solution(n, wires): # 각 송전탑을 연결하는 인접 리스트 생성 graph = [[] for _ in range(n+1)] for a, b in wires: graph[a].append(b) graph[b].append(a) # 각 송전탑에 연결된 예하 송전탑의 노드 수를 계산 count = [0] * (n+1) def dfs(node, parent): for child in graph[node]: if child != parent: d.. 2024. 2. 16.
프로그래머스 Lv2 연속 부분 수열 합의 개수 (python) 연속 부분 수열 합의 개수 풀이 푸는 것은 어떻게 풀면되겠다는 생각은 들었지만, 맨 끝 인덱스에서 다음 인덱스로 넘어가는 과정에 대해서 고민하는데 시간이 오래 걸렸다. 아래의 코드를 추가하려고 머리를 잠깐 굴렸기 때문이다. 이게 맞나?? 하고 말이다. if j+i > N: sum_value += sum(elements[j:]) sum_value += sum(elements[:i+j-N]) for 문을 2개를 사용하면서 슬라이싱과 같이 사용했다. 첫번째 for문은 연속하는 갯수인 1~N개에 대해서 두번쨰 for문은 연속하는 갯수에 해당하는 만큼의 합을 구하기 위한 반복문으로 사용했다. 아래처럼 풀이했다. def solution(elements): answer = [] N = len(elements) # 연.. 2024. 2. 15.