목록자료구조, 알고리즘 (13)
아보카도 Blog
설연휴 마지막 날에 알고리즘 문제 풀었다. 우선 행렬의 덧셈 def solution(arr1, arr2): answer = [] for i in range(len(arr1)): tmp = [] for j in range(len(arr1[i])): tmp.append(arr1[i][j]+arr2[i][j]) answer.append(tmp) return answer 이중 for문을 사용해서 풀었다. 새로 배운 내용은, for문 쓸 때 for i in arr1, 이런식으로 단순하게 쓰기 보다는 range(len)을 사용해서 단위행렬처럼 행렬의 틀 먼저 만들어준 다음, 두 행렬을 더하는 방법이다. for문에서 i와 j를 통해서 해당 행렬의 숫자를 지정해주기. 두번쨰 문제 k번째 수 def solution(ar..
너무 어려워서 혼자는 못풀고 ㅠㅠ 다른사람이 풀이해놓은 것 해석하면서 썼다. 문제 링크 def solution(n, arr1, arr2): answer = [] for i, j in zip(arr1, arr2): # zip은 원소 끼리끼리 묶어주는 함수 a12 = str(bin(i|j)[2:]) # 비트연산자 bin() |에서 둘 중 하나라도 1이라면 1 출력 a12 = a12.rjust(n,"0") # rjust는 오른쪽정렬 a12 = a12.replace("1","#") a12 = a12.replace("0"," ") answer.append(a12) return answer zip 함수 파이썬 zip 함수 사용법, for문에서 변수 여러개 순회 예제 파이썬 zip 함수 원리와 순회 변수 2개 이상의..
네 개의 점이 주어졌을 때 두 점씩 이은 두 직선이 평행이 되는 경우가 있는지 알아보는 문제. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫번째 풀이방법으로는 기울기를 a로 두고 기울기가 같은 애가 있는지 알아봤다. def solution(dots): ang = [] for i in range(3): for j in range (i+1, 4): x= dots[i][0] - dots[j][0] y= dots[i][1] - dots[j][1] a = y/x if x!=0 else -1 if a not in ang: ang.append(a) el..
별찍기 문제다. 문제 출처 자바때는 중첩반복문으로 풀었다. 파이썬으로 풀때도 비슷하게 풀었다. n = int(input()) output = "" for i in range(0,n): for j in range(0,i+1): output += "*" output += "\n" print(output) 근데 더 간단한 방법이 있어 올려본다. n = int(input()) for i in range(n): print('*'*(i+1))
문제 출처 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보려면 더보기를 클릭 더보기 문제 설명 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다. num_listnresult..

와우... 실전 문제들 쭉 살펴봤는데 정말 어려웠다. 노드 제스 입문 코스 들으며 하루에 한 문제씩 따라해보는 걸 목표로. 일단 수업은 끝냈지만 5주차 실전 문제 때문에 끝난 것 같지가 않다. 자료구조 알고리즘 연습은 시간을 두고 꾸준히 연습해야 한다.

이번 주에는 최댓값이나 최솟값을 빠르게 구하기 위한 완전이진트리인 힙 Heap에 대해 중점적으로 배웠다. 그리고 그래프 자료구조인 DFS와 BFS도 배웠고, 문제를 쪼개서 정의할 때 쓰는 동적계획법 Dynamic Programming에 대해서도 배웠다. 1. 트리 Tree 거꾸로 세워놓은 나무처럼 보이는 게층형 비선형 자료구조. 이 때 비선형 자료구조는 데이터가 망이나 계층적으로 구성되어 있는 것을 말하며, 표현에 초점이 맞춰져 있다. 노드 Node: 트리에서 데이터를 저장하는 기본 요소 Root Node, Level, Parent Node, Child Node, Leaf Node=Terminal Node, Sibling, Depth등의 용어도 쓰인다. 2. 이진트리 Binary Tree와 완전이진트리 ..

이번 주에는 큰 개념 두개를 배웠다. 하나는 정렬이오 또 하나는 스택과 큐에서 구현할 수 있는 메소드들이다. 이번주는 연습 문제를 푸는 데 시간이 굉장히 많이 걸렸다. 찬찬히 살펴보자. 1. 정렬 Sort 정렬이란 데이터를 순서대로 나열하는 방법이다. 첫째와 둘째를 비교하고, 둘째와 셋째를 비교하면서 오랜 시간이 걸리는 버블 정렬, 배열 전체를 훑어보고 가장 작은값부터 0번째 인덱스에 넣고, 그 다음 작은 값을 1번째 인덱스에 넣으면서 정렬하는 선택정렬, 1번째 인덱스에 있는 데이터를 0번째 인덱스와 비교하고, 2번째 인덱스에 있는 데이터를 1번째, 0번째 인덱스와 비교하면서 중간에 끼워넣는 삽입정렬, 배열을 각각의 배열로 쪼개서 각 배열을 토너먼트식으로 합치는 병합정렬에 대해 배웠다. 각각의 정렬을 코..