오늘 할 일: 끝내주게 숨쉬기
article thumbnail
[자료구조] 해시, Dictionary

파이썬은 딕셔너리(Dictionary) 형태로 해시 자료구조를 제공합니다. 딕셔너리는 dict 클래스로 구현되어 있습니다. 해시는 1. 인덱스 값이 숫자가 아니라 문자열, 튜플 등 다른 값이어서 리스트를 쓸 수 없을 때 2. 빠른 접근/탐색이 필요할 때 : 함수 대부분의 시간 복잡도가 O(1)로 아주 빠릅니다. 3. 집계를 할 때 : collections 모듈의 Counter 클래스는 각 원소가 몇 개 있는지 셀 때 매우 유용하게 쓰입니다. 딕셔너리 선언하기 { } 기호를 사용하거나 dict 함수를 호출하여 빈 딕셔너리를 선언합니다. 또한 key-value 쌍을 가진 딕셔너리를 선언할 수도 있습니다. 딕셔너리로부터 원소 얻기 딕셔너리의 원소를 가져올 때는 1. [] 기호 사용 2. get 메소드 사용 :..

article thumbnail
[자료구조] 힙(heap)

힙(Heap) - 트리 자료구조의 응용 이진 트리의 일종으로, 여러 개의 값 중에서 가장 큰 값이나 가장 작은 값을 빠르게 찾을 수 있도록 구성된 자료구조입니다. 힙은 배열을 사용하여 구현합니다. + 트리(Tree)란? 임의의 노드에서 다른 노드로의 경로가 하나 밖에 없는 구조로, 노드 중에서 단 하나의 루트 노드(Root Node)가 있고, 루트 노드에서 하위 노드(Sub Node)들이 연결된 비선형 계층 구조입니다. 트리 구조 중 다음 데이터를 가리키는 것이 2개인 단방향 트리 구조는 이진 트리 구조라고 합니다. 트리 자료구조의 구현은 배열이나 연결 리스트를 사용합니다. 힙의 종류 최소 힙(Min Heap) : 부모 노드의 값이 항상 하위 노드의 값보다 작은 경우 최대 힙(Max Heap) : 부모 ..

[프로그래머스] level 1 : 제일 작은 수 제거하기
OLD/Coding Test 2020. 2. 9. 13:22

문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 예 arr return [4,3,2,1] [4,3,2] [10] [-1] Solution 1 2 3 4 def solution(arr) : arr.remove(min(arr)) if arr == [] : arr.append(-1) return arr cs 코드해석 입력받은 배..

[프로그래머스] level 1 :두 정수 사이의 합
OLD/Coding Test 2020. 2. 9. 13:02

문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력 예 a b return 3 5 12 3 3 3 5 3 12 Solution 1 2 3 4 5 def solution(a, b): answer = 0 for i in range(min(a,b), max(a,b)+1): answer += i return answer cs 코드해석 입력받은 a, b중 ..

article thumbnail
[프로그래머스] level 1 : 같은 숫자는 싫어
OLD/Coding Test 2020. 2. 9. 12:41

문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..

[프로그래머스] level 1 : 정수 제곱근 판별
OLD/Coding Test 2020. 2. 7. 11:10

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 Solution 1 2 3 4 def solution(n) : sqrt = n ** (1/2) if sqrt % 1 == 0 : return (sqrt + 1) ** 2 return -1 cs 코드해석 입력 받은 정수를 1/2 제곱하여 제곱근을 구합니다. 만약 구한 제곱근 sqrt가 정수라면(=입력 받은 정수 n이 어떤 양의 정수의 제곱이라면) 1으..

[프로그래머스] level 1 : 하샤드 수
OLD/Coding Test 2020. 2. 7. 10:58

문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false Solution 1 2 3 def solution(x): answer = x % sum([int(i) for i in str(x)]) == 0 return answer cs 코드해석 입력받은 정수 x의 각 자릿수를 우선 더합니다. x를 각 자릿수의 합으로 나누었을 때 나머지가..

article thumbnail
[프로그래머스] level 1 : 자연수 뒤집어 배열로 만들기
OLD/Coding Test 2020. 2. 7. 10:53

문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 [5,4,3,2,1] Solution 1 2 def solution(n): return [int(i) for i in str(n)][::-1] cs 코드해석 우선 입력 받은 n을 str 함수를 사용하여 문자형으로 변환합니다. 그리고나서 각 자리 숫자(아직 타입은 문자형)를 int 함수를 사용하여 숫자로 변환하여 리스트의 원소로 넣어줍니다. 리스트에 [::-1]을 적용하면 리스트 내 원소가 역으로 정렬됩니다.

article thumbnail
[프로그래머스] level 1 : 이상한 문자 만들기
OLD/Coding Test 2020. 2. 7. 10:26

문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return "try hello world" "TrY HeLlO WoRlD" Solution 1 2 3 4 5 6 7 8 9 10 11 12 13 def solution(s): answer = '' idx = 0 for i in range(len(s)): if s[i]..

article thumbnail
[프로그래머스] level 1 : 자릿수 더하기
OLD/Coding Test 2020. 2. 7. 09:57

문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 Solution 1 2 3 4 5 def solution(n): answer = 0 for i in str(n): answer += int(i) return answer cs 코드해석 입력받은 정수 n을 str 함수를 사용하여 문자형으로 변환합니다. 잘 쪼개졌는지 확인해보기 위해 다음을 실행해봤습니다. 정수를 쪼갠 후 출력한 1, 2, 3, 4, 5는 문자형입니다. 이들을 더해주기 위해 int 함수..

반응형